2013-03-26 22 views

cevap

9

Eğer std::ostringstream kullanıyorsanız olmaz. Bunun için temeldeki arabellek okunamaz (ostringstream'daki o), böylece str() aracılığıyla sizin için bunu yapmak için uygulamaya güvenmeniz gerekir. Eğer (o eksikliği dikkat edin) std::stringstream kullanımı durumunda

Ancak, daha sonra, temel tamponu okunabilir ve basic_ostream sitesindeki tamponlar ForReading özel aşırı yüklenme:

#include <iostream> 
#include <sstream> 

int main() 
{ 
    std::stringstream ss1; 
    ss1 << "some " << 111605 << " stuff" << std::flush; 

    std::cout << ss1.rdbuf() << std::endl; 
    std::cout << ss1.str() << std::endl; 
} 

Çıkış:

bazı 111.605 şeyler
bazı 111.605 şeyler

(Example derived from here.), Bir ara kopyası olmadan doğrudan temel tampon

kopyalar.

+0

Teşekkürler! Çözümünüz çalışıyor. Ayrıca, aynı şeyi elde etmek için ostreamin kullanıldığı http://stackoverflow.com/questions/10009809/query-stdostringstream-content/10010160#10010160 adresini de buldum. Sadece ostream ve stringstream kullanımı arasındaki farkın ne olduğunu merak ediyordum. hangisi daha performanslı? –

+0

@WinstonHuang: Hangisinin daha performanslı olduğunu öğrenmek için onu izlemelisiniz. Bunun daha hızlı olduğundan şüphe duyuyorum ve sadece 'std :: stringstream' kullanmaktan çok daha karmaşık. – GManNickG

İlgili konular