C++的字符串读写流
istringstream类用于执行C++风格的字符串流的输入操作。
ostringstream类用于执行C++风格的字符串流的输出操作。
strstream类同时可以支持C++风格的串流的输入输出操作。
1、空格会成为字符串参数的内部分界。
2、要使用上述类,必须包含 sstream 头文件。
注意:由于stringstream构造函数会特别消耗内存,似乎不打算主动释放内存(或许是为了提高效率),但如果你要在程序中用同一个流,反复读写大量的数据,将会造成大量的内存消耗,因些这时候,需要适时地清除一下缓冲 (用 stream.str("") )。
另外不要企图用 stream.str().resize(0),或 stream.str().clear() 来清除缓冲,使用它们似乎可以让stringstream的内存消耗不要增长得那么快,但仍然不能达到清除stringstream缓冲的效果,内存的消耗还在缓慢的增长!
clear()这个名字让很多人想当然地认为它会清除流的内容。实际上,它并不清空任何内容,它只是重置了流的状态标志而已!状态标志位一共有4种, goodbit, eofbit, failbit, badbit。流经过一次<<、>>操作后,此时stringstream会为其设置一个eofbit的标记位,标记其为已经到达eof。查文档得知, 当stringstream设置了eofbit,任何读取eof的操作都会失败,同时,会设置failbit的标记位,标记为失败状态,后面的str()、>>操作都会失败。一般用于多次<<、>>流操作之间。
至于stream.flush(),则根本就起不到任何作用,主要起刷新输出流的作用,比如输出到文件、内