c++ 文本处理
c++ 文本处理
1、使用sstream版本
(1)功能:截取第一列为1以后的数据,如下图,截取第5行(包括第5行)以后的数据,前面4行数据丢弃。

(2)代码:textProc.cc
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
using namespace std;
int main(int argc, char *argv[]) {// *argv[] 是一个指针数组,也就是一个字符串数组。
string dir = "/data/";
string old_file = dir + argv[1] + "/input/txdsp_input_old.dat";
string gen_file = dir + argv[1] + "/input/txdsp_input.dat";
string cmd = "mv ";
cmd = cmd + gen_file + " " + old_file;
if(system(cmd.c_str()) == 0) {
cout<<"file move ok !"<<endl;
} else {
cout<<"file move failed !"<<endl;
}
ifstream is(old_file);
ofstream os(gen_file);
istringstream iss;
string line, word;
while(getline(is, line)) {
iss.str(line); // 刷新string流中的字符串
iss.clear(); // 清除string流中的状态,如果string流读完了failbit会拉起,导致刷新了新数据也不能读取。
iss>>word; // 利用string流一个一个单词的读取, 这里只读一个帧头标识。
if(word == "1") { // 将找到帧头后的所以数据都输出。
os<<line<<endl;
break;
}
}
while(getline(is, line)) {
os<<line<<endl;
}
os.close();
is.close();
return 0;
}
2、regex版本
#include <iostream>
#include <fstream>
#include <regex>
#include <string>
using namespace std;
int main(int argc, char *argv[]) {// *argv[] 是一个指针数组,也就是一个字符串数组。
string dir = "/data/";
string old_file = dir + argv[1] + "/input/txdsp_input_old.dat";
string gen_file = dir + argv[1] + "/input/txdsp_input.dat";
string cmd = "mv ";
cmd = cmd + gen_file + " " + old_file;
if(system(cmd.c_str()) == 0) {
cout<<"file move ok !"<<endl;
} else {
cout<<"file move failed !"<<endl;
}
ifstream is(old_file);
ofstream os(gen_file);
string line;
smatch results;
regex re("^1.*");
while(getline(is, line)) {
if(regex_search(line, results, re)) { // 将找到帧头后的所以数据都输出。
os<<line<<endl;
break;
}
}
while(getline(is, line)) {
os<<line<<endl;
}
regex re2("^tel:(\\d{11}),addr:(\\w+)"); // 正则表达式相对于python的要多加一个反斜杠“\”,应该\在C是特殊字符
string str = "tel:15688886666,addr:sichuan";
regex_search(str, results, re2); //传给regex_search的字符串可以是string,char,wchar等4种类型,对应的使用smatch,cmatch、wcmatch等4中类型。为了简单,一般只使用string+smatch。
cout<<results.str()<<endl; //打印整个str
cout<<results.str(1)<<endl; //打印第一个匹配的括号(\\d{11})
cout<<results.str(2)<<endl; //打印第二个匹配的括号(\\w+)
os.close();
is.close();
return 0;
}
输出:

c++ 文本处理的更多相关文章
- C#给PDF文档添加文本和图片页眉
页眉常用于显示文档的附加信息,我们可以在页眉中插入文本或者图形,例如,页码.日期.公司徽标.文档标题.文件名或作者名等等.那么我们如何以编程的方式添加页眉呢?今天,这篇文章向大家分享如何使用了免费组件 ...
- 07.LoT.UI 前后台通用框架分解系列之——轻巧的文本编辑器
LoT.UI汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui 上次说的是强大的百度编辑器 http://www.cnblogs.com/d ...
- HTML5 语义元素(二)文本内容
上一篇介绍的是关于页面结构方面的语义元素,本篇介绍文本内容方面,包含:<bdi>.<details>.<summary>.<mark>.<outp ...
- 富文本编辑器Simditor的简易使用
最近打算自己做一个博客系统,并不打算使用帝国cms或者wordpress之类的做后台管理!自己处于学习阶段也就想把从前台到后台一起谢了.好了,废话不多说了,先来看看富文本编辑器SimDitor,这里是 ...
- 【NLP】干货!Python NLTK结合stanford NLP工具包进行文本处理
干货!详述Python NLTK下如何使用stanford NLP工具包 作者:白宁超 2016年11月6日19:28:43 摘要:NLTK是由宾夕法尼亚大学计算机和信息科学使用python语言实现的 ...
- 【NLP】Python NLTK处理原始文本
Python NLTK 处理原始文本 作者:白宁超 2016年11月8日22:45:44 摘要:NLTK是由宾夕法尼亚大学计算机和信息科学使用python语言实现的一种自然语言工具包,其收集的大量公开 ...
- 【NLP】Python NLTK获取文本语料和词汇资源
Python NLTK 获取文本语料和词汇资源 作者:白宁超 2016年11月7日13:15:24 摘要:NLTK是由宾夕法尼亚大学计算机和信息科学使用python语言实现的一种自然语言工具包,其收集 ...
- NLP点滴——文本相似度
[TOC] 前言 在自然语言处理过程中,经常会涉及到如何度量两个文本之间的相似性,我们都知道文本是一种高维的语义空间,如何对其进行抽象分解,从而能够站在数学角度去量化其相似性.而有了文本之间相似性的度 ...
- 个人网站对xss跨站脚本攻击(重点是富文本编辑器情况)和sql注入攻击的防范
昨天本博客受到了xss跨站脚本注入攻击,3分钟攻陷--其实攻击者进攻的手法很简单,没啥技术含量.只能感叹自己之前竟然完全没防范. 这是数据库里留下的一些记录.最后那人弄了一个无限循环弹出框的脚本,估计 ...
- CSS 3学习——文本效果和@font-face
文本效果 关于文本效果,这里仅仅记录得到大多数浏览器支持的几个属性,分别是: text-overflow text-shadow word-break word-wrap text-overflow ...
随机推荐
- Go语言系列之标准库strconv
Go语言中strconv包实现了基本数据类型和其字符串表示的相互转换. strconv包 strconv包实现了基本数据类型与其字符串表示的转换,主要有以下常用函数: Atoi().Itia().pa ...
- 微服务架构攀登之路(四)之使用gRPC构建微服务
做一个处理用户信息的微服务 客户端通过用户名,可以从服务端查询用户的基本信息 gRPC proto user.proto 定义客户端请求.服务端响应的数据格式 user.pb.go 自动生成的,为数据 ...
- vue3.0+vite+ts项目搭建(报错处理)
报错一 warning package.json: No license field$ vue-tsc --noEmit && vite build 解决方案,添加这两行,只添加一个是 ...
- 【Python自动化Excel】pandas处理Excel数据的基本流程
这里所说的pandas并不是大熊猫,而是Python的第三方库.这个库能干嘛呢?它在Python数据分析领域可是无人不知.无人不晓的.可以说是Python世界中的Excel. pandas库处理数据相 ...
- 使用Kubernetes两年来的7大经验教训
来源:分布式实验室译者:冯旭松在Ridecell公司管理基础设施团队几年后,我想在停下来休息时记录一些想法和经验教训. 1Kubernetes不仅仅是炒作 我在Kubernetes领域里活跃了很久,所 ...
- 从AAB文件生成APK文件
开头先说方法 1.下载 bundletool 2.开始生成 java -jar bundletool.jar build-apks --bundle=[aab文件路径(例如:C:\Users\Admi ...
- 论文解读《The Emerging Field of Signal Processing on Graphs》
感悟 看完图卷积一代.二代,深感图卷积的强大,刚开始接触图卷积的时候完全不懂为什么要使用拉普拉斯矩阵( $L=D-W$),主要是其背后的物理意义.通过借鉴前辈们的论文.博客.评论逐渐对图卷积有了一定的 ...
- JUC之文章整理以及汇总
JUC文章汇总 JUC部分将学习<JUC并发编程的艺术>和<尚硅谷-大厂必备技术之JUC并发编程>进行博客的整理,各文章中也会不断的完善和丰富. JUC概述 JUC的视频学习和 ...
- linux字符编码防止乱码
一:linux字符编码 en_US.UTF-8 : 美式英文,utf-8 zh_CN.UTF-8 临时优化 export LANG=zh_CN.UTF-8 : 设置编码 永久优化 vim /etc/l ...
- K8s QoS Pod资源服务质量控制
Kubernetes 中如果一个 Node 节点上的 Pod 占用资源过多并且不断飙升导致 Node 节点资源不足,可能会导致为了保证节点可用,将容器被杀掉.在遇见这种情况时候,我们希望先杀掉那些不太 ...