gpt4 book ai didi

c++ sstream,每行读取不同数量的变量

转载 作者:太空宇宙 更新时间:2023-11-04 11:34:42 24 4
gpt4 key购买 nike

我正在尝试读取每行包含不同数量变量的文本文件,并使用 sstream 将正确的值设置为 vector 。

/*Example file
"f 1 2 3"
"f 4 5 6 7" */

ifstream infile(file);
string line;
char a;
int i=0;v,x,y,z;

while(getline(infile,line))
{
istringstream iss(line)

if(line[0]=='f')
{
if(iss>> a >> v >> x >> y)
{
poly[i].face[0]=v;
poly[i].face[1]=x;
poly[i].face[2]=y;
poly[i].four=false;
}
else if(iss>> a >> v >> x >> y >> z) //this doesn't seem to get called, ever.
{
poly[i].face[0]=v;
poly[i].face[1]=x;
poly[i].face[2]=y;
poly[i].face[3]=z;
poly[i].four=true;
}
poly.push_back(Poly());
i++;
}

}

代码适用于具有 3 个变量的行,但不适用于具有 4 个变量的行。

最佳答案

这是因为第一组输入已经成功读取了这些变量,而 else 部分从未到达。由于行的开头总是相同的,就像您存储这些值的位置一样,您可以这样做:

 if(iss >> a >> v >> x >> y) 
{
poly[i].face[0]=v;
poly[i].face[1]=x;
poly[i].face[2]=y;
poly[i].four=false;

if(iss >> z)
{
poly[i].face[3]=z;
poly[i].four=true;
}
}

关于c++ sstream,每行读取不同数量的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23331511/

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