我无法将双值读入文件中的数组 在for循环的第一次迭代之后,由于换行符而没有更多的读数。我该如何绕过这个问题?
输入文件示例:
字
2.55
word< ---截至目前,这将不会读取
5.66
file.open("productsIn.txt");
if(!file.is_open()){
cout << "Could not open file." << endl;
return 1;
}
if(file.is_open()){
cout << "file open" << endl;
for(int i = 0; i < MAX_COUNT; i++){
getline(file, productName[i]);
file >> prices[i];
if(file.good()){
cout << productName[i] << endl << prices[i] << endl;
}
}
}
file.close();
答案 0 :(得分:1)
如果您的数据包含交替的名称和价格,请执行以下操作:
item 1
1.50
item2
2.50
...
当然,您可以在阅读浮动后简单地调用另一个getline()
。它将读取处于读取位置的换行符,并清除可忽略的虚拟字符串参数。这有点意义,因为你读了两行,所以你可能需要两个getline
。 (你可能在名称后没有getline()
,因为价格的格式化输入将跳过空格;但我猜EOL是&#34;名称末尾的标记&#34 ;,名称可能包含多个单词。)
您也可以按this complete answer中的建议使用ignore
或ws
。
因为数据实际上是面向行的,所以可以更清楚地遵循Pete Becker的建议并通过getline()
读取所有行,解析需要它的那些 - 比如价格 - 只需通过{{ 1}}。