[英]Read File line by line using C++
我正在尝试使用以下代码逐行读取文件:
void main()
{
cout << "b";
getGrades("C:\Users\TOUCHMATE\Documents\VS projects\GradeSystem\input.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");
这样做的好处是看起来更整洁。
首先,如果要在字符串中说“ \\”,则应输入“ \\\\”,这就是路径问题。
然后,字符串buf不在连接到您的文件中。
C字符串中的反斜杠用于转义序列(例如, \\n
是换行符, \\r
回车, \\t
是制表符,...),因此您的字符串变得乱码,因为对于每个反斜杠+字符序列,编译器都将替换相应的转义序列。 要在C字符串中输入反斜杠,必须使用\\\\
对其进行转义:
getGrades("C:\\Users\\TOUCHMATE\\Documents\\VS projects\\GradeSystem\\input.txt");
顺便说一句,它是int main
,而不是void main
,并且您应该返回退出代码(如果一切正常,通常为0
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.