在C+;中找到所需行时,如何从文件中获取下n行+; 我尝试逐行深入C++文件,当找到一行时,我想迭代下一个n(预定)行。

在C+;中找到所需行时,如何从文件中获取下n行+; 我尝试逐行深入C++文件,当找到一行时,我想迭代下一个n(预定)行。,c++,string,C++,String,比如说, 如果文件具有以下结构: ..... some text ..... some text ..... some text Area metrics: 5234 24345 6536543 6543543 5234 23645 6536564 6543543 5234 23245 6636343 6757280 Length Metrics: 1 20 3 4 63 55 22 45 6 7 28 56 ..... some text ..... some text 我知道如何检查一行是

比如说,

如果文件具有以下结构:

..... some text
..... some text
..... some text
Area metrics:
5234 24345 6536543 6543543
5234 23645 6536564 6543543
5234 23245 6636343 6757280
Length Metrics:
1 20 3 4
63 55 22 45
6 7 28 56
..... some text
..... some text
我知道如何检查一行是否以“面积度量”开头,但我不确定如何逐行阅读接下来的4行(我已经知道我应该阅读多少行)。我知道如何在Python中这样做,但它似乎更包含在C++中。有没有关于如何做到这一点的建议

到目前为止,我有这个

    for( std::string line = ""; getline( infile, line ); ){
        std::string comm_info("Area metrics");
        if( line.find(comm_info) == 0u){
           /* iterate over next 4 lines *?
        }
    }
这是我的另一个解决方案。我将它们读入一个向量行,并将它们中的每一个与我想要的字符串进行比较。它很好用,但不是很优雅

    std::string line;
    std::string comm_info("Area metrics");
    std::vector<std::string> myLines;
    while (std::getline(infile, line))
    {
        myLines.push_back(line);
    }
    for(auto it = myLines.begin(); it != myLines.end(); ++it) {
        if ((*it).find(comm_info) == 0u){
            for (int i = 1; i <= 4; ++i)
            std::cout  << *(it+i)<< "\n"; //Can replace with other things
        }
}
std::字符串行;
标准::字符串通信信息(“面积度量”);
std::载体糜棱线;
while(std::getline(infle,line))
{
myLines.向后推(线);
}
for(auto-it=myLines.begin();it!=myLines.end();+it){
如果((*it).find(通信信息)==0u){

for(int i=1;i使用for循环读取接下来的四行,如


for(auto i=0;i您已经知道要从文件中读取一行,只需在需要时再调用它一次,例如:

for(std::string-line;getline(infle,line);){
如果(行比较(0,13,“面积度量:”)==0){
std::字符串行[4];
对于(int i=0;i<4;++i){
标准::getline(填充,行[i]);
}
//根据需要使用行[]。。。
}
}

你已经尝试过C++的东西了吗?你能分享这个代码吗?不应该是这样的。hard@RoQuOTriX我添加了更多信息。文本不是以“面积指标”开头的这是在一个巨大的文本文件中间发生的。@ dReSjjm,我在我的问题中添加了更多的上下文。你想迭代的循环的第二个例子。我用了一个不同的方法来解决它,我把它包含在这个问题中,但是我觉得它不是很优雅。谢谢你确定你像你一样测试第二个GETLIN的结果。用第一个做。