C++:使用getline讀取文本文件

之前在使用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; 語句即可。
在這做一下記錄,防止以後再犯同樣的錯誤。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章