c++ - 一次读取一个 1's and 0' s 的文件

标签 c++ file

在 C++ 中,我试图从以下文件读取到一个数组中:

0000000000
0000000000
0000000000
0001110000
0001010000
0001110000
0000000000
0000000000
0000000000
0000000000

我正在使用以下方法将每个 int 放入一个数组中:

  X = (int* )malloc(n*n*sizeof(int));
  for (int i = 0; i<(n*n); i++){
    j = read.get();
    if (isdigit(j)){
        *(X+i) = j - '0';
    }
  }

但是当我将数组输出到文件时,我得到以下输出:

0000000000
0000000000
0000000000
0000001110
0000000101
0000000011
1000000000
0000000000
0000000000
0000000000

而且我认为我输出数组的方式没有任何问题:

for (int i = 0; i<(n*n); i++){
      write << *(X+i);
      if (((1+i) % n) == 0){
        write << endl;
      }
}

我尝试阅读以下内容,但似乎没有用:

for (int i = 0; i<(n*n); i++)
        {
            read >> *(X+i);
        }

最佳答案

问题是即使 isdigit(j) 为 false,您也会递增 i。因此,您保留了与文件中的换行符对应的数组元素未初始化,并且也没有读取所有数字,因为您正在计算换行符。您需要将增量放在 if 中。

for (int i = 0; i < n*n; ) {
    char j = read.get();
    if (isdigit(j)) {
        X[i++] = j - '0';
    }
}

顺便说一句,如果您将指针用作数组,请使用数组语法 X[index] 而不是 *(X+index)。它使意图更加清晰。

关于c++ - 一次读取一个 1's and 0' s 的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53234607/

相关文章:

c++ - std::wstring VS std::string

c++ - 追求者淘汰

c - 使用 c 从文件中读取特定范围的行

python - 如何将 python 中 for 循环的输出写入 csv 格式的文件?

forms - 出于样式目的隐藏文件时,IE 无法发送文件上传

python - 从 Python 中的 csv 文件中删除第一列

c++ - 无法获得协商身份验证以在 libcurl 程序中工作

c++ - 当 MouseWheenTurned 首先滚动然后缩放时缩放 QGraphicsView

c++ - 从字符串中删除特定的子字符串

java - 哪个线程正在使用文件