我正在用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的信息。任何想法为什么会这样?
答案 0 :(得分:0)
我解决了这个问题,因为循环后代码中存在这个问题。这个问题引起了误解,因为好像cin在吸收更多的输入,但是实际上这是后来的无限循环。我尝试在cin语句之后立即使用print语句进行第一次调试,以查看正在执行的操作,但是那些未运行的操作使我失望。我的主要收获是要完全查看该程序并使用完整的调试器。