如果我从流中提取某些内容,该流是否不再包含我提取的内容?

问题描述 投票:0回答:1

如果我有如下代码,并且首先从流"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个文件流`,因为它们保留了数据?

c++ stream
1个回答
2
投票

答案对于不同的流来说是不同的。

stringstream有一个内存缓冲区和一个指示器,可以记住您在读数上的位置。因此,下一个读取从上一个读取停止的地方开始。

文件流以类似的方式工作,它们记住它们到达文件的哪一点。在这两种情况下,都可以使用seekg来更改位置(包括重设到开始位置)。

文件流没有单独的读取和写入位置,因此对于文件流,此相同代码的行为可能有所不同。

其他输入流可能没有可搜索的缓冲区,例如cin

© www.soinside.com 2019 - 2024. All rights reserved.