首页 > 解决方案 > 当我尝试从文件中读取时,由于某种原因会跳过文件的第一个和第三个单词

问题描述

在我的程序中,我试图从一些文件中读取数据,将数据存储到结构中,并对分配的数据进行排序/显示。但是,它并不能正常工作,经过一些故障排除后,我注意到从每个读取的文件中,由于某种原因,第一个和第三个单词都被跳过了。

相关代码:

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 每次迭代只获取和存储一个单词。此外,通过命令提示符输入正在读取的文件作为参数也可能是相关的。

标签: c++file-io

解决方案


   while (ifile >> arr[count])
    {
        getline(ifile, arr[count]);
        count++;
    }

ifile >> arr[count]读取一个单词并且不增加计数,getline读取该行的其余部分并覆盖读取的内容ifile >> arr[count]

这可能是某些单词被跳过的原因 - 读取的单词>>被覆盖。


推荐阅读