你可以换矩阵中的一类,并为它创建一个自定义的提取操作:
struct MyMatrix {
double values[3][3];
};
std::istream & operator >>(std::istream & stream, MyMatrix & value) {
std::string dummy;
std::getline(stream, dummy);
std::getline(stream, dummy);
std::getline(stream, dummy);
std::getline(stream, dummy); // discard first four lines
for(int i = 0; i < 3; i++)
stream >> dummy >> value.values[i][0] >> value.values[i][1]
>> value.values[i][2];
std::getline(stream, dummy);
std::getline(stream, dummy);
std::getline(stream, dummy);
std::getline(stream, dummy); // discard last four lines
return stream;
}
通过此操作员,你可以将整个文件读这样的:
std::ifstream file("data.txt");
std::vector<MyMatrix> data(std::istream_iterator<MyMatrix>(file),
(std::istream_iterator<MyMatrix>()));
你有什么写到目前为止? – 2011-06-07 11:26:16
如果格式与示例所示的一样严格,可以使用'input_stream >> ...'结构,也可以将结果存储在'std :: tr1 :: array'中。流内运算符将跳过所有空格,并且可以将文本部分转储为虚拟字符串。如下所示包装它也是一个好主意。 –
2011-06-07 12:23:15