std::ostringstream
というオブジェクトがあれば、文字列を出力oss
できることがわかりstd::cout << oss.str()
ます。ただし、これを行うoss.str()
と、返された文字列がコピーされます。基になるものを直接印刷する方法はありstreambuf
ますか?
前もって感謝します!
std::ostringstream
というオブジェクトがあれば、文字列を出力oss
できることがわかりstd::cout << oss.str()
ます。ただし、これを行うoss.str()
と、返された文字列がコピーされます。基になるものを直接印刷する方法はありstreambuf
ますか?
前もって感謝します!
を使用している場合ではありませんstd::ostringstream
。このための基礎となるバッファは (したがってo
in 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 のもの
(ここから派生した例。)
これは、中間コピーなしで、基になるバッファーから直接コピーします。