[英]scanning a 2D char Array in C++
我正在尝试在C ++程序中扫描2D char数组。 问题是我的代码未按预期扫描整个阵列。 例如,如果我希望它扫描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;
}
编译: testProj $g++ main.cpp -o main
我在这里想念什么?
编辑 : 输入 41 41 <2D char数组41 * 41>
预期输出 :已扫描40 40
扫描的实际输出 39 40
按Enter
....
扫描40 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 non -要读取的空格字符。 因此,此时,您的代码正在等待读取预期数量的未读非空白输入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.