将文件读取到多个数组中

reading from file into several arrays

本文关键字:数组 文件 读取      更新时间:2023-10-16

我想写一个c++代码来读取文本文件test.txt并将锥形写入多个数组。该文件看起来像:

[7,13,17]
[[0,1,1,0,0,1,0,0,1,0,0,0,0,0,1,0,0],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0],
[1,0,0,1,0,0,0,0,0,1,1,1,0,0,1,0,0],
[0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0],
[0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0]]

我写的代码像

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
  int parameter[10];
  int physical[7][7];
  const char* filename;
     filename = "src/cplex_N7.txt";
      ifstream f(filename, ios::in);
      if (!f) {
         cerr << "No such file: " << filename << endl;
         throw(1);
      }
    f >> parameter >> physical ;
  // cout  content
   return 0;
}

但我总是有错误和错误的输出,你能以最好的方式帮助我做这件事吗。我的意思是,我可以在不使用for循环或不处理逗号和分隔符的情况下读取文件吗。

不能用这种方式处理字符串。看来你是在用try/error方法学习c++,这是学习编程语言最糟糕的方法。我写了一个小样本来阅读你格式的一行数字:

string x = "1,0,1,0,1,0,1,0,1,0";
int array[10];
for(int i = 0; i < x.size(); i+=2)
    array[i / 2] = x[i] - '0';

数字是偶数索引,所以我们应该迭代字符串的偶数姿态。它们每个都是一个char,我们可以通过从"0"中减去它们来获得int值。