在读取文件时,如何在使用 << 运算符后考虑新行
While reading form a file, how to account for new lines after using the << operator?
>我在从文件中将双精度值读取到数组时遇到问题在 for 循环的第一次迭代之后,由于换行符,没有更多的读取。如何绕过此问题?
输入文件示例:
词
2.55
单词<---截至目前,这将不读
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();
如果您的数据由交替显示的名称和价格行组成,如下所示:
item 1
1.50
item2
2.50
...
当然,您可以在阅读浮点数后简单地调用另一个getline()
。它将读走位于读取位置的换行符,并清除可以忽略的虚拟字符串参数。这是有道理的,因为你确实阅读了两行,所以你可能需要两个getline
s.(你可以不用名称后面的getline()
,因为价格的格式化输入将跳过空格;但我想EOL是"名称结尾"的标记,其中名称可能包含多个单词。
您也可以按照完整答案中的建议使用ignore
或ws
。
因为数据实际上是面向线的,所以遵循Pete Becker的建议并通过getline()
读取所有行可能更清晰,只需通过[i]stringstream
解析需要它的行 - 如价格 - 即可。
相关文章:
- 使用新行和不使用新行读取文件
- 遇到新行时,有没有办法停止istream_iterator
- PangoLayout 中忽略的新行
- 使用 clang 格式时,当行很大时,如何将右括号分成新行?
- 如何检测将文本文件读入 int 数组的新行
- 当 getline 直到新行才读取时会发生什么?
- 添加新行时工作代码引发异常.调试技巧?
- QTree查看新行,没有布局就不可见已更改
- 新行上的 clang 格式右括号
- C++流:保存到新行而不是覆盖旧行
- (C++) 使用诅咒打印从文件中读入的新行
- 按升序输出整数时,将最后一个整数放在新行上
- 用C++计算输入文本的新行数
- 为什么我的代码在终端中没有输出任何内容.开始新行没有错误
- WriteConsoleOutputCharacterW - 我的新行在哪里?
- 为什么当测试用例数为 1 时,我的程序不输入而是打印新行?
- 如何运行 while 循环直到到达新行?
- 是否可以转换 c++ 运算符新输出?
- 从文本文件读取时,如何知道是否已到达新行?
- 在读取文件时,如何在使用 << 运算符后考虑新行