展开全部
我上次给别人的解答的时候,用STL里的TR1写的一个例子,希望对你有用
#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;
}
}
#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;
}
}
追问
可以加你的QQ详细请教一下吗 我的 715615064
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询