Text Parser c ++代码

时间:2016-04-18 12:18:44

标签: c++ parsing text

我需要一个C ++代码来解决以下问题: 我有一个文本文件,我想从特定的行开始读取,然后我需要打印位于字符之间的输出---< \ s> 示例:hello< \ s> 我希望输出为你好

我想我应该使用文本解析器但不确定如何!

#include <iostream>
#include <cstdlib>
#include <cctype>
#include <cstring>
#include <fstream>
#include <string>

using namespace std;
int main(int argc, char* argv[])
{

    std::string line_;
    ifstream file_("tty.txt");
    if (file_.is_open())
    {
        while (getline(file_, line_))
        {
            std::cout << line_ << '\n';

        }

        file_.close();

    }
    else
    std::cout << "error" << '\n';
    std::cin.get();
    system("PAUSE");
    return 0;
}

1 个答案:

答案 0 :(得分:0)

您可以在一个变量中加载所有文本,然后使用正则表达式搜索所需模式的所有出现(在您的情况<sth>(any_aplha_numeric_character)*</sth> *表示一个或多个出现,您可以在任何std :: regex教程)

示例:

std::smatch m;          
std::string text = "<a>adsd</a>  <a>esd</a>";
std::string::const_iterator searchStart(text.cbegin());
std::regex rgx("<a>[A-Za-z0-9\\s]*</a>");

while (std::regex_search(searchStart, text.cend(), m, rgx))
{
    cout << m[0] << endl;
    searchStart += m.position() + m.length();
}

给出:<a>adsd</a><a>esd</a>作为结果,从中很容易提取内部字符串