设置变量时C ++程序挂起

时间:2019-12-14 19:28:38

标签: c++

我正在用C ++编写程序,并且输入了带有边界和网格的示例,例如:

4 4
SOUI
1234
WER5
0234

我正在使用以下循环读取输入

    int N, M, startR = 0, startC = 0;
    string matrix[105][105], instr;

    cin >> N >> M;

    for(int i = 0; i < N; i++){
        cin >> instr;
        for(int j = 0; j < M; j++){
            matrix[i][j] = instr[j];
            if(matrix[i][j] == "B"){
                startR = i;
                startC = j;
            }
        }
    }

如果我使用此代码,则该程序将要求更多输入,并且无论我给出什么,它都不会运行。这意味着永远不会使用此输入循环之后的代码。但是,如果删除变量的设置,程序将运行正常。例如:

    int N, M, startR = 0, startC = 0;
    string matrix[105][105], instr;

    cin >> N >> M;

    for(int i = 0; i < N; i++){
        cin >> instr;
        for(int j = 0; j < M; j++){
            matrix[i][j] = instr[j];
        }
    }

我不确定为什么会这样,因为我所做的只是设置其他一些变量。我需要有关在哪里找到变量B的信息。任何想法为什么会这样?

1 个答案:

答案 0 :(得分:0)

我解决了这个问题,因为循环后代码中存在这个问题。这个问题引起了误解,因为好像cin在吸收更多的输入,但是实际上这是后来的无限循环。我尝试在cin语句之后立即使用print语句进行第一次调试,以查看正在执行的操作,但是那些未运行的操作使我失望。我的主要收获是要完全查看该程序并使用完整的调试器。