gpt4 book ai didi

c++ - 如何在 getline 中使用 stringstream 构造函数?

转载 作者:太空狗 更新时间:2023-10-29 20:58:41 26 4
gpt4 key购买 nike

跟进https://stackoverflow.com/a/1120224/390066 .

为什么我不能用

getline(stringstream(line),cell,','){}

代替

stringstream lineStream(line); 
getline(lineStream,cell,','){}

?

更新

我应该澄清一下,我想在循环中使用 getline。

此外,我还应该注意到,我最初的意图是使用 getline 逐行读取文件,并使用新 getline 中的那一行以 ',' 分隔,imo 更直观。

据我目前的理解,getline 并不是为此而设计的,因为它需要一个非常量输入并给出 const 标记;因此,getline 不能盲目递归。

最佳答案

正如@James Kanze 所展示的,您可以。

问题是你真的想要吗?
流在表达式末尾被销毁,因此您只能从中读取一个单元格。

如果我们在 context of the original question 中查看这个:
即你不能在循环中使用它:

std::string       line = /* Init */;
std::stringstream lineStream(line);

std::string cell;
while(std::getline(lineStream, cell, ','))
{
// Do stuff with cell.
}

如果将代码放入此上下文中,它将无法按预期工作:

std::string cell;
while(std::getline(std::istringstream(line).flush(), cell, ','))
{
// Do stuff with cell.
}

因为 while() 中的表达式每次都会被完全计算。因此,您进入无限循环,连续读取第一个单元格。

关于c++ - 如何在 getline 中使用 stringstream 构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26979013/

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