之前在使用C++中的getline讀取文本文件時由於沒有仔細看getline的定義,導致出了錯:在讀取文本文件時未讀取到文件中的第一行。
錯誤的源代碼如下:
vector<string>readfile(string s1,vector<string>v1)
{
ifstream infile;
infile.open(s1, ios::in);
if (!infile.is_open())
{
cout << "讀取文件失敗.";
return;
}
string s;
while (getline(infile, s))
{
infile >> s;
v1.push_back(s);
}
return v1;
}
如果用上面的代碼讀取的話就讀取不到文本文件中的第一行,原因是在使用getline時已經讀取了文本文件中的內容,所以當循環中再加上 "infile>>s;"這句話時就會造成infile讀取不到getline已經讀取到的第一行,即讀取不到文本文件中的第一行。
去掉上述代碼中的 infile >> s; 語句即可。
在這做一下記錄,防止以後再犯同樣的錯誤。