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++ 文本处理的更多相关文章

  1. C#给PDF文档添加文本和图片页眉

    页眉常用于显示文档的附加信息,我们可以在页眉中插入文本或者图形,例如,页码.日期.公司徽标.文档标题.文件名或作者名等等.那么我们如何以编程的方式添加页眉呢?今天,这篇文章向大家分享如何使用了免费组件 ...

  2. 07.LoT.UI 前后台通用框架分解系列之——轻巧的文本编辑器

    LoT.UI汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui 上次说的是强大的百度编辑器 http://www.cnblogs.com/d ...

  3. HTML5 语义元素(二)文本内容

    上一篇介绍的是关于页面结构方面的语义元素,本篇介绍文本内容方面,包含:<bdi>.<details>.<summary>.<mark>.<outp ...

  4. 富文本编辑器Simditor的简易使用

    最近打算自己做一个博客系统,并不打算使用帝国cms或者wordpress之类的做后台管理!自己处于学习阶段也就想把从前台到后台一起谢了.好了,废话不多说了,先来看看富文本编辑器SimDitor,这里是 ...

  5. 【NLP】干货!Python NLTK结合stanford NLP工具包进行文本处理

    干货!详述Python NLTK下如何使用stanford NLP工具包 作者:白宁超 2016年11月6日19:28:43 摘要:NLTK是由宾夕法尼亚大学计算机和信息科学使用python语言实现的 ...

  6. 【NLP】Python NLTK处理原始文本

    Python NLTK 处理原始文本 作者:白宁超 2016年11月8日22:45:44 摘要:NLTK是由宾夕法尼亚大学计算机和信息科学使用python语言实现的一种自然语言工具包,其收集的大量公开 ...

  7. 【NLP】Python NLTK获取文本语料和词汇资源

    Python NLTK 获取文本语料和词汇资源 作者:白宁超 2016年11月7日13:15:24 摘要:NLTK是由宾夕法尼亚大学计算机和信息科学使用python语言实现的一种自然语言工具包,其收集 ...

  8. NLP点滴——文本相似度

    [TOC] 前言 在自然语言处理过程中,经常会涉及到如何度量两个文本之间的相似性,我们都知道文本是一种高维的语义空间,如何对其进行抽象分解,从而能够站在数学角度去量化其相似性.而有了文本之间相似性的度 ...

  9. 个人网站对xss跨站脚本攻击(重点是富文本编辑器情况)和sql注入攻击的防范

    昨天本博客受到了xss跨站脚本注入攻击,3分钟攻陷--其实攻击者进攻的手法很简单,没啥技术含量.只能感叹自己之前竟然完全没防范. 这是数据库里留下的一些记录.最后那人弄了一个无限循环弹出框的脚本,估计 ...

  10. CSS 3学习——文本效果和@font-face

    文本效果 关于文本效果,这里仅仅记录得到大多数浏览器支持的几个属性,分别是: text-overflow text-shadow word-break word-wrap text-overflow ...

随机推荐

  1. R语言基本数据对象之向量的主要运算

    在R语言里操作和接触的所有东西都称作对象(object).对象有很多种类 可以包含各种类型的数据.R 语言里所有的东西都被称为对象,R语言中常见的数据类型有几下几种,分别是字符型 (character ...

  2. 新增访客数量MR统计之数据库准备

    关注公众号:分享电脑学习回复"百度云盘" 可以免费获取所有学习文档的代码(不定期更新)云盘目录说明:tools目录是安装包res 目录是每一个课件对应的代码和资源等doc 目录是一 ...

  3. SQLAlchemy完全入门

    最近想要学习SQLAlchemy, 发现网上的中文文档大多是机翻的, 读起来特别变扭, 因此对照着最新的英文文档梳理了一遍, 写下来记录一下 目前SQLAlchemy的版本为1.4.x, 风格处于1. ...

  4. Presto 在字节跳动的内部实践与优化

    在字节跳动内部,Presto 主要支撑了 Ad-hoc 查询.BI 可视化分析.近实时查询分析等场景,日查询量接近 100 万条.本文是字节跳动数据平台 Presto 团队-软件工程师常鹏飞在 Pre ...

  5. CodeForces 519B A and B and Compilation Errors (超水题)

    这道题是超级水的,在博客上看有的人把这道题写的很麻烦. 用 Python 的话是超级的好写,这里就奉上 C/C++ 的AC. 代码如下: #include <cstdio> #includ ...

  6. Java反射给泛型集合赋值

    Java反射给泛型集合赋值 泛型 Java泛型简单描述下: 比如创建一个List集合,我想在里边只放Student对象信息,就需要写成 List<Student> studentList ...

  7. SQL安全执行

    begin tran begin -----------执行SQL开始----------------- update Audioset Name =3 -----------执行SQL结束----- ...

  8. 🏆【Alibaba中间件技术系列】「RocketMQ技术专题」Broker服务端自动创建topic的原理分析和问题要点指南

    前提背景 使用RocketMQ进行发消息时,一般我们是必须要指定topic,此外topic必须要提前建立,但是topic的创建(自动或者手动方式)的设置有一个开关autoCreateTopicEnab ...

  9. IBM MQ常用运维命令

    创建队列管理器 crtmqm –q QMgrName -q是指创建缺省的队列管理器 删除队列管理器 dltmqm QmgrName 启动队列管理器 strmqm QmgrName 如果是启动默认的队列 ...

  10. ideal 创建maven 项目

    一 准备工作,已经配置好了maven 环境 .没有的话,参考我的上一篇笔记. 二,ideal相关配置 打开ideal  找到设置. file  ------->setting  .     点击 ...