如何使用argv []在fstream

时间:2015-12-12 11:48:26

标签: c++ ifstream argv

我想编写一个程序,可以将.txt文件中的整数值读入矩阵。参数应该由argv []传递。 运行格式:./ a.exe dimension1 dimension2 filename等。 当我编译程序时没有错误但是当我使用以下参数运行程序时,我总是得到cerr消息:“错误:矩阵A无法初始化”:

./ a.exe 20 50 A.txt 50 30 B.txt

for循环是否有错误或为什么我无法将.txt文件中的值读入我的矩阵?

我会感激任何帮助。

由于

马吉德阿卜

ifstream ifs_A;
ifstream ifs_B;

ifs_A.open(argv[3]);
ifs_B.open(argv[6]);


if (ifs_A.good() && ifs_B.good())
{
    int a;
    ifs_A >> a >> a;
    ifs_B >> a >> a;

     int A_d1 = atoi(argv[1]);
     int A_d2 = atoi(argv[2]);

     int B_d1 = atoi(argv[4]);
     int B_d2 = atoi(argv[5]);

     const int z = 20;
     const int y = 50;
     const int x = 30;

    static double A[z][y], B[y][x];


    for (int i=0; i < A_d1; i++) {
      for (int j=0; j < A_d2; j++) {
         if (ifs_A.good())
         {
            ifs_A >> A[i][j];
         }
         else
         {
             cout << "Error: The Matrix A could not be initialized" << endl;
             return 1;
         }
      }
    }
    ifs_A.close();


    for (int i=0; i < B_d1; i++) {
      for (int j=0; j < B_d2; j++) {
        if (ifs_B.good())
        {
            ifs_B >> B[i][j] ;
        }
        else
        {
            cout << "Error: The Matrix B could not be initialized" << endl;
            return 1;
        }
      }
    }
    ifs_B.close();
}
else
{
    cerr << "The file " << argv[3] << " and " << argv[6] << " was not found" << endl;
}


  return 0;

}

0 个答案:

没有答案