繁体   English   中英

在C ++中扫描2D char数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM