为了账号安全,请及时绑定邮箱和手机立即绑定

c++如何提取txt中的特定内容?

/ 猿问

c++如何提取txt中的特定内容?

茅侃侃 2018-12-13 18:15:30

c++如何提取txt中的特定内容


查看完整描述

1 回答

?
暮色呼如

一般只能用正则表达式来解决了。我原来给别人写过个例子,给你参考一下
#include "stdafx.h"
#include "stdio.h"
#include <regex>
#define TR1 std::tr1

void main()
{
/// 读取文件实例代码,你自己修改一下路径.
// std::ifstream file("路径");
// /// 读取文件的内容.
// std::string sFileContent(std::istreambuf_iterator<char>(file.rdbuf()), std::istreambuf_iterator<char>());

/// 为了方便测试,我把你的文件内容直接弄成字符串了.
const std::string sFileContent("\
INPUT(G1gat)\n\
INPUT(G2gat)\n\
INPUT(G3gat)\n\
INPUT(G6gat)\n\
INPUT(G7gat)\n\
OUTPUT(G22gat)\n\
OUTPUT(G23gat)\n\
G10gat = nand(G1gat, G3gat)\n\
G11gat = nand(G3gat, G6gat)\n\
G16gat = nand(G2gat, G11gat)\n\
G19gat = nand(G11gat, G7gat)\n\
G22gat = nand(G10gat, G16gat)\n\
G23gat = nand(G16gat, G19gat)\n\
");
TR1::regex regInput("INPUT\\(G([\\d])gat\\)");
TR1::smatch matchRes;
int nMatchFlag = TR1::regex_constants::match_default;
std::string::const_iterator itBegin, itEnd;
itBegin = sFileContent.begin();
itEnd = sFileContent.end();
while (std::tr1::regex_search(itBegin, itEnd, matchRes, regInput, (TR1::regex_constants::match_flag_type)nMatchFlag))
{
std::cout << "匹配结果: " << matchRes[0] << std::endl;
std::cout << "匹配到的数字: " << matchRes[1] << std::endl;
itBegin = matchRes[0].second;
nMatchFlag = std::tr1::regex_constants::match_prev_avail|std::tr1::regex_constants::match_not_bol;
}
}



查看完整回答
反对 回复 2019-01-06

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信