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 ...
随机推荐
- SpringBoot学习笔记三之表述层
注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6803355920697917965/ 首先配置learn-admin-webui中的web.xml文件 配置Con ...
- 【Warrior刷题笔记】剑指offer 32. 三道题,让你学会二叉树的深度广度优先遍历与递归迭代技术
题目一 剑指 Offer 32 - I. 从上到下打印二叉树 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/cong-shang-dao-xi ...
- vue注册全局组件
在项目开发中能不能自己写一个组件可以像iview或者element那样可以不必引用就可以直接用呢?答案是可以的. 首先,写一个组件mainHeader. 接着在vue中注册这个组件,代码如下: Vue ...
- 【Java常用类】String
文章目录 String String实例化的方式 方式一:通过字面量定义 方式二:new + 构造器的方式 String s = new String("abc")方式创建对象,在 ...
- 【Java】静态与非静态
文章目录 静态与非静态 static关键字 使用static修饰属性:静态变量(或类变量) 类变量与实例变量的内存解析 使用static修饰方法:静态方法 使用static的注意点 开发中,如何确定一 ...
- MyCms 自媒体 CMS 系统 v2.6,SEO 优化升级
MyCms 是一款基于Laravel开发的开源免费的自媒体博客CMS系统,助力开发者知识技能变现. MyCms 基于Apache2.0开源协议发布,免费且不限制商业使用,欢迎持续关注我们. V2.6 ...
- default和delete
在C++中,有四类特殊的成员函数,分别为:默认构造函数,默认析构函数,默认拷贝构造函数,默认赋值运算符.他们的作用为创建.初始化.销毁.拷贝对象. 虽然在类A中什么都没有定义,但是编译会通得过,因为编 ...
- 集合框架-工具类-JDK5.0特性-ForEach循环
1 package cn.itcast.p4.news.demo; 2 3 import java.util.ArrayList; 4 import java.util.HashMap; 5 impo ...
- python全局解释器GIL锁(-死锁)
目录 一:Python中的GIL锁 1.GIL介绍 2.GIL的作用 3.cpython 4.内存管理>>>垃圾回收机制 二:全局解释器锁GIL 1.GIL特点 三:计算密集型与IO ...
- JS异步加载AMD和CMD
CommonJS 是个规范,主要用于js后端,var foo = require("./foo");foo("Hi"); AMD前置加载 require.jsr ...