c++ - 当我尝试从文件中读取时,由于某种原因会跳过文件的第一个和第三个单词
问题描述
在我的程序中,我试图从一些文件中读取数据,将数据存储到结构中,并对分配的数据进行排序/显示。但是,它并不能正常工作,经过一些故障排除后,我注意到从每个读取的文件中,由于某种原因,第一个和第三个单词都被跳过了。
相关代码:
void fillArray(string filename, string arr[])
{
ifstream ifile(filename);
int count = 0;
while (getline(ifile, arr[count++]))
{
getline(ifile, arr[count]);
count++;
}
ifile.close();
}
相关文件的结构是在每个单词之后都有一个换行符,因此 getline 每次迭代只获取和存储一个单词。此外,通过命令提示符输入正在读取的文件作为参数也可能是相关的。
解决方案
while (ifile >> arr[count])
{
getline(ifile, arr[count]);
count++;
}
ifile >> arr[count]
读取一个单词并且不增加计数,getline
读取该行的其余部分并覆盖读取的内容ifile >> arr[count]
这可能是某些单词被跳过的原因 - 读取的单词>>
被覆盖。
推荐阅读
- ruby-on-rails - Bitnami rails docker 容器:wkhtmltopdf:55:in `initialize': Permission denied @ rb_sysopen -
- firebase - Flutter Firestore 在获取文档时没有响应
- java - Mockito.When 方法在调用该方法时无法返回模拟对象
- vb.net - VB.NET 使用文本文件保存客户详细信息
- python - 将包含特定字符串的列名发送到 pandas 中的列表
- python - 将时间戳列更改为小时
- linux - .Net `CharUnicodeInfo` 类的 Linux C 库等价物是什么
- java - swagger-maven-plugin 不生成键和值,导致“空”swagger.json
- php - 如何在 >php7.1 中将类名转换为未实例化的类
- sql - 以 12 个月滚动的方式遍历客户,并检查客户在过去 12 个月内是否未订购