gpt4 book ai didi

c++ - 从输入流中读取

转载 作者:行者123 更新时间:2023-11-30 02:59:45 25 4
gpt4 key购买 nike

我有一个涉及流的 C++ 类(class)的编程作业,我试图更好地理解为什么某些函数以它们的方式工作。

我正在从文本后面有空格的 istringstream 读取输入。为什么最后一个词在输出中重复出现?

istringstream is;
string inputstring = "The cliched statement regarding the big brown dog and foobar or something ";
string outputstring;
is.str(inputstring);
while (is.good())
{
is >> outputstring;
cout << outputstring << endl;
}

所以,我现在不是在 good 标志上循环,而是在 while 条件下进行提取:

while (is >> outputstring)
...

这很好用,不会重复最后一个词。读完后跳出 while 循环的语句是怎么回事?提取返回对同一流的引用,但它是否检查标志或其他内容?

是否有一个 header 允许您包含所有流?

最佳答案

What is it about this statement that breaks out of the while loop when it is done reading? The extraction returns a reference to the same stream, but does it check flags or something?

您完全正确,提取运算符返回对流的引用。用作 while 循环(还有 fordo-while 循环和 if 语句)被强制转换为 bool 类型。它算作一个显式转换,因此调用ios_base::operator bool(),返回!this->fail()。这就是检查标志的方式。

关于c++ - 从输入流中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12662956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com