簡體   English   中英

C++,在 for 循環中使用 getline 和 cin.ignore() 時出現問題。Getline 在 for 循環中被第二次迭代跳過

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM