我需要一个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;
}
答案 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>
作为结果,从中很容易提取内部字符串