在使用正则表达式执行函数时逐行解析 inFile

parse inFile line by line while using regex to execute function

我有点把自己画在角落里,需要一些指导。我在从 infstream 读取时使用正则表达式进行一些解析。我想做的是

while(getLine(inFile, str)) {

     search(str) for regex match
     if(match)
         str = my_function(str)
         outFile << str
     else 
         outFile unchanged str
}

就目前而言,我正在这样做:

while(getLine(inFile, str)) {

 auto des = std::sregex_iterator(str.cbegin(), str.cend(), dest);
 auto reg_it = std::sregex_iterator();

 std::for_each(des , reg_it, [](std::smatch const& m){
          str = my_function(str)
          outFile << str
        });
}

不幸的是,这不允许我编辑文件并按顺序将其写回,因为我这样做的方式只允许我访问返回的匹配项.

任何指导将不胜感激!

这行得通吗?

while(getLine(inFile, str)) {

    auto des = std::sregex_iterator(str.cbegin(), str.cend(), dest);
    auto reg_it = std::sregex_iterator();
    int matches = 0;

    std::for_each(des , reg_it, [](std::smatch const& m)){
        str = my_function(str);
        outFile << str;
        matches++;
    });

    if (matches == 0) {
        outFile << str;
    }
}

这个有效:

if (std::regex_match(str.cbegin(), str.cend(), matches , my_regex)) {
        string baz;
        baz = my_function(str); // we have a match
        outFile baz;
}
else outFile << str << std::endl;