首页 > 解决方案 > Char在循环中读取数据时获取垃圾值

问题描述

我在循环读取数据时遇到问题。尽管在我看来代码很好,但对于某些测试用例,它会崩溃。这是简化的程序代码。

#include <iostream>
#include <string>

using namespace std;

int main()
{
    int n;
    string str1, str2, str3;
    char choice;
    cin >> n;
    for (int i = 0; i < n; i++) {
        cin >> choice;
        cin.ignore();
        getline(cin, str1);
        if (choice == 'a') {
            getline(cin, str2);
            getline(cin, str3);
            // ...
            // operations not related to data input
            // ...
        } else if (choice == 'b') {
            getline(cin, str2);
            // ...
            // operations not related to data input
            // ...
        } else if (choice == 'c') {
            // ...
            // operations not related to data input
            // ...
        }
    }
    return 0;
}

选择的输入值始终是“a”、“b”或“c”,但在程序期间它有时会得到其他值。我尝试改用 scanf ,但它并没有改变结果。有谁知道如何解决这个问题?

标签: c++stdingetline

解决方案


推荐阅读