それから istringstream を構築したい場合、char* からヌル文字まで、または std::string からのすべてのもの:
istringstream str(ptr); // char*
istringstream str(other_str); // std::string
生のポインターを istream のバッファーに入れたいと話しても、それはできません。ストリームは、必要に応じて、ファイル、端末などからデータを必要に応じてオンデマンドで取得し、必要に応じてデータをバッファリングします (まあ、正確ではありません。strstream
生のポインタを受け取り、そこから直接読み取り/書き込みを行う を使用できます。しかし、それは非推奨のクラス - 使用しないでください。ポインターのように使用できるものだけが必要な場合は、streambuf イテレーターを使用できます。ただし、これらは実際にはポインターではないため、およびその他のものend
から減算することはできません。begin
std::istreambuf_iterator<char> begin(one_istream), end;
while(begin != end)
std::cout << *begin++;
文字列ストリームに書き込まれたものから文字列を取得することについて話す場合は、次を使用できますostringstream::str
。
ostringstream o;
o << "This is a number: " << 42;
std::string str = o.str(); // str == "This is a number: 42"
それ以外の場合は、通常、 からのものしか読み取るistream
ことができません。が必要な場合はostream
、次のことができます
stream.write(ptr, N);
stream.write(ptr.c_str(), ptr.c_str() + ptr.size());
str が指すバイトから正確に N 文字を書き込みます。を使用してストリームに書き込むこと<<
もできます。null 文字までのすべて、または std::string からのすべてを書き込みますが、フィールド幅などの書式設定フラグを尊重します。
stream << ptr; // char*
stream << other_str; // everything from std::string