【问题标题】:read matrix from a file in C C++从 C C++ 文件中读取矩阵
【发布时间】:2009-09-29 13:22:53
【问题描述】:

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

感谢和问候!

【问题讨论】:

标签: c++ c matrix


【解决方案1】:

类似的东西。你需要包含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;
}

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      读取第一行,计算字段数,然后使用fseek() 回到文件开头。

      【讨论】:

        猜你喜欢
        • 2023-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-21
        • 1970-01-01
        • 2022-01-05
        • 1970-01-01
        相关资源
        最近更新 更多