只是想知道,对于存储在文件中的矩阵,即文件中的每一行是矩阵的一行,其中元素由空格分隔,我如何预先确定矩阵的大小,然后创建一个相同大小的数组并将其读入C和C ++中的数组?如果您有一些代码示例,那将不胜感激!
谢谢和问候!
答案 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()
返回文件的开头。