gpt4 book ai didi

C++ - 使用 >> 运算符读取文件直到到达行尾

转载 作者:太空宇宙 更新时间:2023-11-03 10:43:45 24 4
gpt4 key购买 nike

我找了很多地方,仍然没有找到如何做到这一点,所以,请耐心等待。

假设我必须读取一个包含不同类型数据的 txt 文件,其中第一个 float 是一个 id,然后有一些(不总是相同数量的)代表其他东西的其他 float ......次,例如,成对。

所以文件看起来像这样:

1 0.2 0.3
2.01 3.4 5.6 5.7
3 2.0 4.7
...

经过大量研究,我最终得到了这样一个函数:

vector<Thing> loadThings(char* filename){
vector<Thing> things;
ifstream file(filename);
if (file.is_open()){
while (true){
float h;
file >> h; // i need to load the first item in the row for every thing
while ( file.peek() != '\n'){

Thing p;
p.id = h;
float f1, f2;
file >> f1 >> f2;
p.ti = f1;
p.tf = f2;

things.push_back(p);

if (file.eof()) break;
}
if (file.eof()) break;
}
file.close();
}
return things;
}

但是带有 (file.peek() != '\n') 条件的 while 循环永远不会自行结束,我的意思是... peek 永远不会等于 '\n'

有人知道为什么吗?或者也许是其他一些使用 >>> 运算符读取文件的方法?!非常感谢!

最佳答案

只是建议另一种方式,为什么不使用

// assuming your file is open
string line;

while(!file.eof())
{
getline(file,line);

// then do what you need to do

}

关于C++ - 使用 >> 运算符读取文件直到到达行尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27595418/

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