使用c++逐行读取文件

Read File line by line using C++

本文关键字:文件 读取 逐行 c++ 使用      更新时间:2023-10-16

我正在尝试使用下面的代码逐行读取文件:

void main()
{
    cout << "b";
    getGrades("C:UsersTOUCHMATEDocumentsVS projectsGradeSysteminput.txt");
}
void getGrades(string file){
    string buf;
    string line;
    ifstream in(file);
    if (in.fail())
    {
        cout << "Input file error !!!n";
        return;
    }
    while(getline(in, line))
    {
        cout << "read : " << buf << "n";
    }
}

由于某些原因,它一直返回"输入文件错误!!"我已经尝试了完整的路径和相对路径(通过只是使用文件的名称,因为它位于同一文件夹的项目)。我做错了什么?

您没有转义字符串。试着用:

修改
getGrades("C:\Users\TOUCHMATE\Documents\VS projects\GradeSystem\input.txt");

正如Felice所说,""是一个转义。因此你需要两个。

或者您可以使用'/'字符。
因为windows已经接受这个作为目录分隔符十多年了。

getGrades("C:/Users/TOUCHMATE/Documents/VS projects/GradeSystem/input.txt");

首先,如果你想在字符串中说'',你应该写上'',这是路径问题。

然后,字符串没有连接到你的文件..

C字符串中的反斜杠用于转义序列(例如n是换行符,r是回车符,t是制表符,…),因此您的字符串被乱码,因为对于每个反斜杠+字符序列,编译器正在替换相应的转义序列。要在C字符串中输入反斜杠,必须转义它们,使用\:

getGrades("C:\Users\TOUCHMATE\Documents\VS projects\GradeSystem\input.txt");

顺便说一下,它是int main,而不是void main,您应该返回一个退出代码(如果一切顺利,通常是0)。