gpt4 book ai didi

c++ - 在条件中使用提取运算符的返回值?

转载 作者:行者123 更新时间:2023-11-30 01:23:15 25 4
gpt4 key购买 nike

为什么 ss >> aa >> bb >> cc >> dd 可以用于条件检查?如果我使用 ss >> aa >> bb >> cc >> dd >> ee 这个操作的返回值是什么?

ifstream inputFile("source.txt", ifstream::in);
string aa, bb, cc, dd;
char line[1024];

while(!inputFile.eof())
{
inputFile.getline(line, 1023);
stringstream ss(stringstream::in | stringstream::out);
ss.str(line);

if(ss >> aa >> bb >> cc >> dd)
{
cout << aa << "-" << bb << "-" << cc << "-" << dd << endl;
}
}

像这样使用 source.txt:

1aaa ddd eee asd
2dfs dfsf sdfs fd
3sdf sdfsdfsdf d s

最佳答案

流输入操作的返回值是流。

表达式

ss >> aa

等于

operator>>(ss, aa)

operator>>() 函数返回第一个参数。

使用多个输入操作简单地链接函数调用。例如

ss >> aa >> bb;

成为

operator>>(ss, aa).operator>>(ss, bb);

流可以用作 bool 表达式的原因是因为它有一个特殊的conversion operator。这使得它可以这样使用。


顺便说一下,你不应该使用 while (!stream.eof())。而是使用 getline 返回流的事实,并且可以在 bool 表达式中使用流:

while (inputFile.getline(line, 1023))
{
// ...
}

关于c++ - 在条件中使用提取运算符的返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15202697/

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