【发布时间】:2009-09-29 13:22:53
【问题描述】:
只是想知道,对于存储在文件中的矩阵是什么,即文件中的每一行都是矩阵的一行,其中元素由空格分隔,我如何预先确定矩阵的大小,然后创建一个相同大小的数组并将其读入 C 和 C++ 中的数组中?如果您有一些代码示例,将不胜感激!
感谢和问候!
【问题讨论】:
-
这很相似,只是它只是 C++:stackoverflow.com/questions/572962/…
只是想知道,对于存储在文件中的矩阵是什么,即文件中的每一行都是矩阵的一行,其中元素由空格分隔,我如何预先确定矩阵的大小,然后创建一个相同大小的数组并将其读入 C 和 C++ 中的数组中?如果您有一些代码示例,将不胜感激!
感谢和问候!
【问题讨论】:
类似的东西。你需要包含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;
}
【讨论】:
在 C 语言中,您可以使用 fgets 一次读取一行,使用 strtok 或类似方法处理行,并使用 atof 或 sscanf 读取数字。可以处理第一行以确定矩阵宽度并分配内存,然后重新处理以插入第一行。如果高度可能不同,那么您要么需要动态分配内存,要么读取整个文件计数行然后重新处理它。
【讨论】:
读取第一行,计算字段数,然后使用fseek() 回到文件开头。
【讨论】: