gpt4 book ai didi

c++ - 从 C++ 中的文本文件读取时忽略字符

转载 作者:行者123 更新时间:2023-11-28 03:49:00 25 4
gpt4 key购买 nike

我是 C++ 新手。我想从看起来像这样的 STL 文件中读取数据

facet normal -0 -0 -1

outer loop

vertex 2.49979 1.14163 0.905974

vertex 2.49979 1.01687 0.905974

vertex 2.22582 1.68468 0.905974

endloop

endfacet 0

同样的事情会以不同的值继续进行 100 次。

现在我只想读取和存储二维数组形式的数值。如果我可以完全忽略除顶点值之外的所有其他东西,那就更好了,因为我必须只使用那些值。请帮我解决这个问题。

最佳答案

您可以将矩阵包装在一个类中并为其创建自定义提取运算符:

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>()));

关于c++ - 从 C++ 中的文本文件读取时忽略字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6264419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com