C ++在两个字符串之间提取数据

时间:2018-01-23 10:19:17

标签: c++ extract fstream ifstream ofstream

我正在寻找一个c ++代码,它可以从两个字符串之间的文件example.txt中提取一些特定内容,并忽略其余内容。例如,文件example.txt有以下行

xyz
abc
['Content','en']],
<html>hi this is a line <br></html>
',true], 
suzi 20

我想在 [&#39;内容&#39;,&#39; en&#39;]],&#39;,true]之间提取代码,< / strong>表示

<html>hi this is a line <br></html>

请注意,我不是编程和使用dev ++编译器的专家

1 个答案:

答案 0 :(得分:0)

最简单的想法是将文件读入字符串,然后提取内容:

#include <string>
#include <sstream>

std::string extract(std::string const& tag_begin, std::string const& tag_end, std::istream& input)
{
    // file stream -> in memory string
    std::string filedata((std::istreambuf_iterator<char>(input)), std::istreambuf_iterator<char>());

    // find content start and stop
    auto content_start = filedata.find(tag_begin);
    if (content_start == std::string::npos) {
        return ""; // error handling
    }
    content_start += tag_begin.size();
    auto content_end   = filedata.find(tag_end, content_start);
    auto content_size  = content_end - content_start;

    // extract (copy) content to other string
    auto content = filedata.substr(content_start, content_size);
    return content;
}

live demo

然后,您需要根据需要调整此通用解决方案。