這個問題在這里已經有了答案: 為什么 std::getline() 在格式化提取后跳過輸入? (5 個回答) 5 天前關閉。
這是要讀取的檔案
5 Name1 Name2 Name3 Name4 Name5
我目前的閱讀代碼是:
void readData(string fileName, string names[], int n) {
ifstream myFile("file.txt");
string line;
if (myFile.is_open())
{
myFile >> n; // read first line
cout << n;
for (int i = 0; i < n; i) {
getline(myFile, line);
names[i] = line;
cout << names[i] << endl;
}
}
}
我想將名稱放入陣列 names[] 中,但即使 n = 5,它似乎也只運行了 4 次。這是為什么?
這是我得到的當前輸出:
5
Name1
Name2
Name3
Name4
uj5u.com熱心網友回復:
你讀的時候沒有讀完第一行myFile >> n。所以第一個 getline 只是讀取該行的其余部分,它是空的
做
myFile >> n;
getline(myFile, line); // read rest of line
或者
getline(myFile, line); // read whole line
n = stoi(line); // convert to int
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/458913.html
