如果我有如下代码,并且首先从流"This"
将str
存储在streem
中:
using namespace std;
int main()
{
istringstream streem("This is the content in the stream.");
string str;
streem>>str;
cout<<str; //This will cout "This"
如果再次执行streem>>str
,然后再次执行cout<<str
,将显示is
。那么这是否意味着"This"
不再存在于istringstream
中了?
What about
个文件流`,因为它们保留了数据?
答案对于不同的流来说是不同的。
stringstream
有一个内存缓冲区和一个指示器,可以记住您在读数上的位置。因此,下一个读取从上一个读取停止的地方开始。
文件流以类似的方式工作,它们记住它们到达文件的哪一点。在这两种情况下,都可以使用seekg
来更改位置(包括重设到开始位置)。
文件流没有单独的读取和写入位置,因此对于文件流,此相同代码的行为可能有所不同。
其他输入流可能没有可搜索的缓冲区,例如cin
。