[英]C++, issue with using getline and cin.ignore() in for loop.Getline is skipping by second iterate in the for loop
我一直在試圖弄清楚為什么它沒有讀取我的第二個 getline()。 第一個 getline(cin, line) 工作正常。 沒有錯誤或任何東西。 它只是在循環中的第二次迭代時跳過該行。 任何幫助將不勝感激。 謝謝你。
int main() {
int n = 0;
std::cin >> n;
std::vector <int> arrNumbers;
int requestLine = 0;
std::string line;
double procent = 0;
if (n > 99) {
std::cout << "wrong range of number" << std::endl;
exit(-1);
}
for (int i = 0; i < n; i++) {
int num;
std::cin >> num;
arrNumbers.push_back(num);
}
std::cin >> requestLine;
for (int i = 0; i < requestLine; i++) {
std::cin.ignore(256, '\n');
std::getline(std::cin, line);
int del1 = line.find_first_of(' ', 0); // first position of space
int del2 = line.find_first_of(' ', del1 + 1); // second position of space
std::stringstream indexStr(line.substr(0, del1)); // position
std::stringstream numberStr(line.substr(del1, del2)); // number
std::stringstream repeatsStr(line.substr(del2)); // repied
int index, number, repeats;
indexStr >> index;
numberStr >> number;
repeatsStr >> repeats;
arrNumbers.insert(arrNumbers.begin() + index - 1, repeats, number);
del1 = 0;
del2 = 0;
}
for (const int& number: arrNumbers) {
sort(arrNumbers.begin(), arrNumbers.end());
}
return 0;
}
你確認程序進入循環了嗎? 檢查它之前的“n”值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.