c++ string 识别标志位并解析标志位后面的字符

解析字符串中的固定标志位
正则表达式和iterator的配合应用

#include <string>
#include <map>
#include <regex>
#include <iostream>
/
/替换\\M+后面的字符
// \\M+195B6 替换为 文
std::regex pattern(R"(\\M+[^\\M]*)"); // 匹配 \\M+ 后跟任意非 \\M 的字符(0次或多次)  
std::string CalM_Replcace(std::string inPutStr) {
	std::string result;
	// 正则表达式模式,匹配 \\M+ 和后面的部分作为一个整体  
	std::sregex_iterator iter(inPutStr.begin(), inPutStr.end(), pattern);
	std::sregex_iterator end;
	std::string::const_iterator search_start(inPutStr.cbegin());

	while (iter != end) {
		std::smatch match = *iter;
		auto curPos = match.position();
		if (curPos > 0)
		{
			result += inPutStr.substr(0, curPos);
			inPutStr = inPutStr.erase(0, curPos); // 从找到的位置开始,删除3个字符 
			iter = std::sregex_iterator(inPutStr.begin(), inPutStr.end(), pattern);
			continue;
		}
		if (curPos == 0)
		{
			//删除  \\M+
			inPutStr = inPutStr.erase(0, 3); // 从找到的位置开始,删除3个字符 

			//截取内容
			std::string substring = inPutStr.substr(0, 5);
			inPutStr = inPutStr.erase(0, 5);
			// 添加替换后的部分(即 J)  
			if (mapChineseSign.find(substring) != mapChineseSign.end())
			{
				result += mapChineseSign[substring]
posted @   一只小小汤圆  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
点击右上角即可分享
微信分享提示