c文本处理
c++ 文本处理
1、使用sstream版本
(1)功能:截取第一列为一以后的数据,如下图,截取第5行(包括第5行)以后的数据,前面四行数据丢弃。
(2)代码:textProc.cc
#包含输入输出流
#包含fstream
#包含流
#包含字符串
使用命名空间标准;
int main(int argc,char *argv[]) {//*argv[]是一个指针数组,也就是一个字符串数组。
字符串dir='/data/';
string old _ file=dir argv[1]'/input/txdsp _ input _ old。dat ';
string gen _ file=dir argv[1]'/input/txdsp _ input。dat ';
字符串cmd=' mv
cmd=cmd gen _ file ' ' old _ file
if(系统(cmd。c _ str())==0){ 0
cout'file移动正常!恩德尔
} else {
标准输出文件移动失败!恩德尔
}
ifstream为(old _ file);
流操作系统的(gen _ file);
istringstream iss
字符串行,字;
while(getline(is,line)){ 0
iss.str(线);//刷新线流中的字符串
国际空间站。clear();//清除线流中的状态,如果线流读完了故障位会拉起,导致刷新了新数据也不能读取。
issword/利用线流一个一个单词的读取,这里只读一个帧头标识。
if(word=='1') { //将找到帧头后的所以数据都输出。
oslineendl
打破;
}
}
while(getline(is,line)){ 0
oslineendl
}
操作系统。close();
就是。close();
返回0;
}
2、regex版本
#包含输入输出流
#包含fstream
#包含正则表达式
#包含字符串
使用命名空间标准;
int main(int argc,char *argv[]) {//*argv[]是一个指针数组,也就是一个字符串数组。
字符串dir='/data/';
string old _ file=dir argv[1]'/input/txdsp _ input _ old。dat ';
string gen _ file=dir argv[1]'/input/txdsp _ input。dat ';
字符串cmd=' mv
cmd=cmd gen _ file ' ' old _ file
if(系统(cmd。c _ str())==0){ 0
cout'file移动正常!恩德尔
} else {
标准输出文件移动失败!恩德尔
}
ifstream为(old _ file);
流操作系统的(gen _ file);
字符串行;
smatch结果;
雷盖克斯re('^1.*');
while(getline(is,line)){ 0
if(regex_search(line,results,re)) { //将找到帧头后的所以数据都输出。
oslineendl
打破;
}
}
while(getline(is,line)){ 0
oslineendl
}
regex re2('^tel:(\\d{11}),addr:(\\w)');//正则表达式相对于大蟒的要多加一个反斜杠"\",应该\在C是特殊字符
string str=' tel:15688886666,addr :四川';
regex_search(str,results,re2);//传给regex_search的字符串可以是字符串,字符wchar等四种类型,对应的使用smatch、cmatch、wcmatch等四中类型。为了简单,一般只使用字符串匹配。
cout结果。str()endl;//打印整个潜艇用热中子反应堆(海底热反应堆的缩写)
cout结果。str(1)endl;//打印第一个匹配的括号(\\d{11})
cout结果。str(2)endl;//打印第二个匹配的括号(\\w)
操作系统。close();
就是。close();
返回0;
}
输出:
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/132066.html