簡體   English   中英

從 C++ 中的文本文件讀取時忽略字符

[英]Ignoring Characters while reading from a text file in C++

我是 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

同樣的事情將 go 以不同的值進行 100 次。

現在我只想讀取和存儲二維數組形式的數值。 如果我可以完全忽略除頂點值之外的所有其他事情,那就更好了,因為我必須只使用這些值。 這個你能幫我嗎。

您可以將矩陣包裝在 class 中並為其創建自定義提取運算符:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM