std::ostringstreamというオブジェクトがあれば、文字列を出力ossできることがわかりstd::cout << oss.str()ます。ただし、これを行うoss.str()と、返された文字列がコピーされます。基になるものを直接印刷する方法はありstreambufますか?
前もって感謝します!
std::ostringstreamというオブジェクトがあれば、文字列を出力ossできることがわかりstd::cout << oss.str()ます。ただし、これを行うoss.str()と、返された文字列がコピーされます。基になるものを直接印刷する方法はありstreambufますか?
前もって感謝します!
を使用している場合ではありませんstd::ostringstream。このための基礎となるバッファは (したがってoin ostringstream) から読み取ることができないため、 を介して実装に依存する必要がありますstr()。
ただし、std::stringstream( がないことに注意してくださいo) を使用する場合、基になるバッファーは読み取り可能であり、 にはbasic_ostreamバッファーから読み取るための特別なオーバーロードがあります。
#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;
}
出力:
いくつかの 111605 のもの
いくつかの 111605 のもの
(ここから派生した例。)
これは、中間コピーなしで、基になるバッファーから直接コピーします。