你可以換矩陣中的一類,併爲它創建一個自定義的提取操作:
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