从C C ++中的文件中读取矩阵

时间:2009-09-29 13:22:53

标签: c++ c matrix

只是想知道,对于存储在文件中的矩阵,即文件中的每一行是矩阵的一行,其中元素由空格分隔,我如何预先确定矩阵的大小,然后创建一个相同大小的数组并将其读入C和C ++中的数组?如果您有一些代码示例,那将不胜感激!

谢谢和问候!

3 个答案:

答案 0 :(得分:5)

像这样的东西。你需要包含vector,sstream和string。

无需事先找出矢量的大小。

std::vector<int> readRow(std::string row) {
  std::vector<int> retval;
  std::istringstream is(row);
  int num;
  while (is >> num) retval.push_back(num);
  return retval;
}

std::vector<std::vector<int> > readVector(std::istream &is) {
  std::string line;
  std::vector<std::vector<int> > retval;
  while (std::getline(is, line))
    retval.push_back(readRow(line));
  return retval;
}

答案 1 :(得分:1)

在C语言中,您可以使用fgets一次读取一行,并使用strtok或类似方法处理行和atof或sscanf以读取数字。可以处理第一行以确定矩阵宽度并分配内存,然后重新处理以插入第一行。如果高度可能不同,那么您需要动态分配内存,或者读取整个文件计数行然后重新处理它。

答案 2 :(得分:1)

阅读第一行,计算字段,然后使用fseek()返回文件的开头。