>M>>N; cout,c++,arrays,C++,Arrays" /> >M>>N; cout,c++,arrays,C++,Arrays" />

在C++; 我试图在我的C++程序中扫描二维字符数组。问题是我的代码没有按预期扫描整个阵列。对于ex,如果我想让它扫描一个41*41数组,那么出于某种原因,它会在第40行停止,当我按enter键时,它会扫描剩下的一行。下面是一段简单的代码 #include <iostream> char G[101][101]; int N,M; using namespace std; int main(int argc, const char * argv[]) { cin >> M >> N; cout << "m n scanned" << M << N << "\n"; for (int t =0;t<M;t++) { for (int j = 0;j<N;j++) { cin >> G[t][j]; cout << "scanned " << t << " " << j << "\n"; } } return 0; } #包括 charg[101][101]; int N,M; 使用名称空间std; int main(int argc,const char*argv[]{ cin>>M>>N; cout

在C++; 我试图在我的C++程序中扫描二维字符数组。问题是我的代码没有按预期扫描整个阵列。对于ex,如果我想让它扫描一个41*41数组,那么出于某种原因,它会在第40行停止,当我按enter键时,它会扫描剩下的一行。下面是一段简单的代码 #include <iostream> char G[101][101]; int N,M; using namespace std; int main(int argc, const char * argv[]) { cin >> M >> N; cout << "m n scanned" << M << N << "\n"; for (int t =0;t<M;t++) { for (int j = 0;j<N;j++) { cin >> G[t][j]; cout << "scanned " << t << " " << j << "\n"; } } return 0; } #包括 charg[101][101]; int N,M; 使用名称空间std; int main(int argc,const char*argv[]{ cin>>M>>N; cout,c++,arrays,C++,Arrays,对我有用 输入文件,通过管道传输到标准输入上执行的代码: 41 41 ***************************************** ***************************************** [ 39 more rows of the same ] 输出: m n scanned4141 scanned 0 0 scanned 0 1 scanned 0 2 ... scanned 40 36 scanned 40 37 scanned 40

对我有用

输入文件,通过管道传输到标准输入上执行的代码:

41 41
*****************************************
*****************************************

[ 39 more rows of the same ]
输出:

m n scanned4141
scanned 0 0
scanned 0 1
scanned 0 2

...

scanned 40 36
scanned 40 37
scanned 40 38
scanned 40 39
scanned 40 40
当按原样使用时,显示的代码没有问题


我怀疑您忘记了一个小细节,即
char
上的
operator>
值除了换行字符外,还将跳过任何空格,并且您的输入矩阵包含空格,这些空格将被忽略,代码将继续查找41*41个非空格字符进行读取。因此,此时,您的代码正在等待读取e未读非空白输入的预期数量。

您向程序提供了哪些输入,以及您得到了哪些输出与您期望的相比?@JoeF用输入和输出编辑了问题。您需要给
cin
一个结束符号,如空格或回车。您在最后一次输入后是否按回车键。(41*41字符)@宋元瑶我该怎么办?在投票时,请考虑添加评论吗?