C++精解【4】

文章目录

  • 正则表达式
    • 基础
    • regex_match
    • regex_replace
    • swap
  • Eigen
    • 概述
    • 简单例子

正则表达式

基础

  • 正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"),是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式(规则)的文本。
  • 更多请见百度百科

regex_match

测试正则表达式是否与整个目标字符串相匹配。这是一种完全匹配,不是部分匹配

#include <iostream>
#include <map>
#include <vector>
#include <string>
#include <sstream>
#include <algorithm>
#include <regex>
using namespace std;vector<string> split(const string &text, char separator) {vector<string> tokens;stringstream ss(text);string item;while (getline(ss, item, separator)) {if (!item.empty()) {tokens.push_back(item);}}return tokens;
}string removeSpaces(const string& input) {string result = input;result.erase(std::remove(result.begin(), result.end(), ' '), result.end());return result;
}int main(){string codeStr = "x:int=88.11;y:int=11;z:int=99";char delimiter = ';';vector<string> codeTokens=split(codeStr,delimiter);vector<string> symbolTokens,sysmbolVarTokens;regex strRx(R"((\d+)(\.)(\d+))");smatch match;for (const std::string &codeLineToken : codeTokens) {delimiter = '=';symbolTokens=split(codeLineToken,delimiter);delimiter = ':';sysmbolVarTokens=split(symbolTokens[0],delimiter);if (removeSpaces(sysmbolVarTokens[1])=="int"){string intSysbol=removeSpaces(sysmbolVarTokens[0]);string value=removeSpaces(symbolTokens[1]);bool found = regex_match(value, match, strRx);if (found)cout <<"非法赋值" <<intSysbol<<":"<<value<< endl;else{cout << "合法赋值" <<intSysbol<<":"<<value<< endl;}}}return (0);
}
非法赋值x:88.11
合法赋值y:11
合法赋值z:99Process returned 0 (0x0)   execution time : 0.214 s
Press any key to continue.

regex_replace

替换匹配正则表达式。
所有大写字母全部用“.”替换。

#include <iostream>
#include <string>
#include <regex>
using namespace std;int main(){string str = "aBjDEIFoo998089";regex strRx(R"([A-Z])");string fmt(".");smatch match;std::cout << "replacement == "<< std::regex_replace(str, strRx, fmt) << std::endl;return (0);}
replacement == a.j....oo998089Process returned 0 (0x0)   execution time : 0.220 s
Press any key to continue.

swap

交换两个 basic_regex 或 match_results 对象。

#include <iostream>
#include <string>
#include <regex>
using namespace std;int main(){string str = "a99jDEIFoo998089";regex strRx1(R"([A-Z]+)");regex strRx2;smatch match1;smatch match2;swap(strRx1, strRx2);bool found =regex_search(str, match2, strRx2);if (found)cout<<match2.str()<<endl;return (0);}
#include <iostream>
#include <string>
#include <regex>
using namespace std;int main(){string str = "a99jDEIFoo998089";regex strRx1(R"([A-Z]+)");regex strRx2;smatch match1;smatch match2;swap(strRx1, strRx2);bool found =regex_search(str, match2, strRx2);swap(match1, match2);if (found)cout<<match1.str()<<endl;return (0);}
DEIFProcess returned 0 (0x0)   execution time : 0.197 s
Press any key to continue.

Eigen

概述

  • Eigen是一个用于线性代数的c++模板库:矩阵、向量、数值求解器和相关算法。
  • 除了c++标准库之外,Eigen没有任何依赖关系。
  • 具体见Eigen

简单例子

#include <iostream>
#include "f:/learn/eigen-3.4.0/Eigen/Dense"using Eigen::MatrixXd;
using Eigen::VectorXd;int main()
{MatrixXd m = MatrixXd::Random(3,3);m = (m + MatrixXd::Constant(3,3,1.2)) * 50;std::cout << "m =" << std::endl << m << std::endl;VectorXd v(3);v << 1, 2, 3;std::cout << "m * v =" << std::endl << m * v << std::endl;
}
m =
10.1251 90.8741 45.0291
66.3585 68.5009 99.5962
29.3304 57.9873  92.284
m * v =
326.961
502.149
422.157Process returned 0 (0x0)   execution time : 0.168 s
Press any key to continue.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/32630.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

银行卡二要素核验-银行卡二要素核验接口-银行卡二要素核验API

接口地址&#xff1a;https://www.wapi.cn/api_detail/102/235.html 在线查询&#xff1a;https://www.wapi.cn/bank_name_verfiy.html 网站地址&#xff1a;https://www.wapi.cn 返回格式&#xff1a;json,xml 请求方式&#xff1a;POST,GET POST 请求需要设置Header头&#x…

winRar去广告记录

效果&#xff1a;双击winRar.exe&#xff0c;不会弹出广告窗口&#xff0c;但会弹出使用时间许可警告&#xff0c;效果不是很完美。 工具&#xff1a;everything.exe&#xff08;非必须&#xff09;、sublime text&#xff08;非必须&#xff09;、spyxx.exe&#xff08;非必须…

‘eigen2cv’ is not a member of ‘cv’ 的参考解决方法

文章目录 写在前面一、问题描述二、解决方法参考链接 写在前面 自己的测试环境&#xff1a; Ubuntu 20.04&#xff0c;OpenCV 4.2.0 一、问题描述 /home/xxx/xxx/xxx/xxx.cpp:248:9: error: ‘eigen2cv’ is not a member of ‘cv’; did you mean ‘eigen’?248 | cv:…

【Python】已解决:pymssql引发的MSSQLDatabaseException错误

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决&#xff1a;pymssql引发的MSSQLDatabaseException错误 一、分析问题背景 在Python中使用pymssql库与Microsoft SQL Server数据库交互时&#xff0c;有时会遇到pymssql._mss…

Vim常识

文章目录 Vim复制某行到下一行Vim回滚操作Vim查找 Vim复制某行到下一行 命令模式下 YYp Vim回滚操作 命令模式下 uu 表示undo Vim查找 命令模式下 /keyword -> forward search ?keyword -> backward search shift g -> to the bottom line

系统安全设计规范(Word原件)

1.1安全建设原则 1.2 安全管理体系 1.3 安全管理规范 1.4 数据安全保障措施 1.4.1 数据库安全保障 1.4.2 操作系统安全保障 1.4.3 病毒防治 1.5安全保障措施 1.5.1实名认证保障 1.5.2 接口安全保障 1.5.3 加密传输保障 1.5.4终端安全保障 资料获取&#xff1a;私信或者进主页。…

Redis数据库的删除和安装

Redis数据库的删除和安装 1、删除Redis数据库2、下载Redis数据库 1、删除Redis数据库 没有下载过的&#xff0c;可以直接跳到下面的安装过程↓ 我们电脑中如果有下载过Redis数据库&#xff0c;要更换版本的话&#xff0c;其实Redis数据库的删除是比较简单的&#xff0c;打开我…

微型操作系统内核源码详解系列五(五):cm3下Pendsv切换任务上篇

系列一&#xff1a;微型操作系统内核源码详解系列一&#xff1a;rtos内核源码概论篇&#xff08;以freertos为例&#xff09;-CSDN博客 系列二&#xff1a;微型操作系统内核源码详解系列二&#xff1a;数据结构和对象篇&#xff08;以freertos为例&#xff09;-CSDN博客 系列…

Bilibili开源发布轻量级 Index 系列语言模型:2.8T 训练数据,支持角色扮演

Bilibili首次发布 Index 系列模型中的轻量版本&#xff1a;Index-1.9B 系列 本次开源的 Index-1.9B系列包含以下模型&#xff1a; Index-1.9Bbase:基座模型&#xff0c;具有 19 亿 非词嵌入参数量&#xff0c;在 2.8T 中英文为主的语料上预训练&#xff0c;多个评测基准上与…

已解决java.util.concurrent.BrokenBarrierException异常的正确解决方法,亲测有效!!!

已解决java.util.concurrent.BrokenBarrierException异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 问题分析 出现问题的场景 报错原因 解决思路 解决方法 分析错误日志 检查线程中断 设置合理的等待时间 优化代码逻辑 使用同步…

Linux gdb lldb面试题及参考答案(万字长文)

什么是GDB?简述其主要功能。 GDB(GNU Debugger)是GNU项目的一部分,是一个功能强大的源代码级别的调试器,主要用于C、C++和其他多种编程语言的程序调试。GDB提供了丰富的功能来帮助开发者理解程序内部的工作方式,诊断并修复代码中的错误。其主要功能包括但不限于: 启动程…

[数据概念|方案实操]清华数据大讲堂5-数据要素化治理的理论方法与工程实践

“ 数据要素化是资产化的重要前提和实现路径” 鼹鼠哥公众号链接在 [数据概念|方案实操]清华数据大讲堂5-数据要素化治理的理论方法与工程实践 (qq.com) 2024年6月5日&#xff0c;清华数据大讲堂第五讲开讲。 中国电子信息产业集团副总 陆志鹏 以《数据要素化治理的理论方法与…

Adobe Photoshop图像处理软件下载安装,ps 2024版本安装包分享

Adobe Photoshop&#xff0c;这款业界闻名的图像处理软件&#xff0c;简称“PS”&#xff0c;以其强大的功能和广泛的应用领域&#xff0c;赢得了无数设计师、摄影师和创意工作者的青睐。 在Photoshop的世界里&#xff0c;用户能够随心所欲地对图像进行裁剪、缩放、调整色彩和…

视频共享融合赋能平台LntonCVS视频监控业务平台建设安全煤矿矿井应用方案

随着我国经济的飞速增长&#xff0c;煤炭作为主要的能源之一&#xff0c;在我国的能源结构中扮演着至关重要的角色。然而&#xff0c;煤矿事故的频繁发生&#xff0c;不仅造成了巨大的人员伤亡和财产损失&#xff0c;也对社会产生了深远的负面影响。因此&#xff0c;实现煤矿的…

kotlin 跨平台 粗略步骤

启用多平台支持 修改项目的build.gradle.kts&#xff1a; 首先&#xff0c;需要在build.gradle.kts文件中添加多平台插件并启用实验性功能。 plugins {kotlin("multiplatform") version "1.8.0" // 请使用当前最新版本 }kotlin {// 设置多平台支持jvm() //…

程序员如何高效读代码?

程序员高效读代码的技巧包括以下几点&#xff1a; 明确阅读目的&#xff1a;在开始阅读代码之前&#xff0c;先明确你的阅读目的。是为了理解整个系统的架构&#xff1f;还是为了修复一个具体的bug&#xff1f;或者是为了了解某个功能是如何实现的&#xff1f;明确目的可以帮助…

国产自研编程语言“仓颉”来了!

在 6.21 召开的华为开发者大会&#xff08;HDC2024&#xff09;上,华为自研的国产编程语言“仓颉”终于对外正式发布了&#xff01; 随着万物互联以及智能时代的到来&#xff0c;软件的形态将发生巨大的变化。一方面&#xff0c;移动应用和移动互联网领域仍然强力驱动人机交互…

颠覆多跳事实验证!Causal Walk 前门调整技术引领去偏新纪元

Causal Walk: Debiasing Multi-Hop Fact Verifcation with Front-Door Adjustment 论文地址: Causal Walk: Debiasing Multi-Hop Fact Verification with Front-Door Adjustment| Proceedings of the AAAI Conference on Artificial Intelligencehttps://ojs.aaai.org/index.p…

ctfshow web其他 web450--web460

web450 <?phphighlight_file(__FILE__); $ctfshow$_GET[ctfshow];if(preg_match(/^[a-z][\^][a-z][\^][a-z]$/, $ctfshow)){ //小写字母^小写字母^小写字母eval("($ctfshow)();"); }?ctfshowphpinfo^phpinfo^phpinfoweb451 <?phphighlight_file(__FILE__…