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.
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ı? –
@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