有谁知道我的代码为什么不从第一行读取文件

时间:2014-01-18 12:13:37

标签: c++ ifstream

我想创建延迟字幕的程序,当我运行下面的代码时,不是从第一行读取。 它像文件的中间一样。

#include "stdafx.h"
#include "iostream"
#include "cstdlib"
#include "fstream"
#include "string"

using namespace std;

int main(int argc, char *argv[]){
     ifstream input; //input

     char input_file[32]; //names of input and output


      cout << "Enter name of input fille: "; ///user gives names of input
      cin >> input_file;

input.open(input_file);
if (!input.good()){
    cout << "File " << input_file << " dosen't exist." << endl;
    return 1;
}


string row;
while (!input.eof()){    
    getline(input, row);

    cout << row << endl;
}

system("pause");
return 0;
}

2 个答案:

答案 0 :(得分:0)

首先,eof()不应放在while()中,有关详细信息,请参阅here。所以改变

while (!input.eof()){    
    getline(input, row);
    cout << row << endl;
}

while (getline(input, row)){       
    cout << row << endl;
}

看看它是怎么回事。从文件中间读取真的很奇怪。也许你可以进一步分享文件的内容给我们,以便更好地解决问题。

答案 1 :(得分:0)

在阅读任何内容之前,您仍然可以使用input.seekg(0, input.beg)手动将位置设置为开头。