C++删除文本文件空行
来源:互联网 发布:dnf技能数据库 编辑:程序博客网 时间:2024/04/28 21:38
转载自:http://blog.csdn.net/u012995856/article/details/51527192
- 大体思路:
IO流打开文本文件,循环读取,把非空行入队列,读取完之后清空文件,把队列内容重新写回文件。 - 纠结过:
当文件结尾几行是空行的时候就处理不了。- 看到文件结尾标志是EOF,其实是16进制0xFF,想把这个直接写入到想终止的地方,这样就能造成文件结束了。但是尝试了很久,未果。
- 想使用截断函数,发现WindowsAPI有提供,unistd.h也有提供函数,但是没成功。未果。
效果
处理之前:
处理之后:算是测试用例吧:
- 开头有空行
- 一行空行
- 连续几行空行
- 结尾空行
代码:
rm_BlankLine.cpp
#include<iostream>#include<fstream>#include<regex>#include<string>#include<cstdlib>#include<deque>using namespace std;/**删除文本文件的空行**/int rm_BlankLine(string file){ fstream targetFile("dian_point.txt",fstream::in | fstream::out); string line;//作为读取的每一行 string temp;//作为缓存使用 deque<string> noBlankLineQueue;//双向队列,只在队首和队尾操作时性能较好 //判断文件是否打开 if(!targetFile){ cerr << "Can't Open File!" << endl; return EXIT_FAILURE; } //记录文件开始位置 auto StartPos = targetFile.tellp();//循环读取判断文件的空行并放入队列 while(getline(targetFile,line)){ cout << targetFile.tellg() << endl;; if(line.empty()){ cout << "此行为空" << endl; }else{ cout << "上一行是空行" << endl; noBlankLineQueue.push_back(line); } } targetFile.close(); //使用ofstream打开再关闭文件是为了清空源文件 ofstream emptyFile(file); emptyFile.close(); //重新打开文本文件 fstream target(file,fstream::out | fstream::in); if(!target){ cerr << "Can't Open File" << endl; } //获取队首和队尾 auto begin = noBlankLineQueue.begin(); auto end = noBlankLineQueue.end(); //遍历双向队列中的元素 //并写回文件 while(begin != end){ temp = *begin; cout << temp << endl; target << temp << endl; ++begin; } target.close(); return EXIT_SUCCESS;}int main(){ rm_BlankLine("te.txt"); }
0 0
- 删除文本文件空行
- C++删除文本文件空行
- C++删除文本文件空行
- JAVA 删除文本文件中的空行
- linux/shell 文本文件删除/删掉空行
- 巧用工具删除文本文件中的多余空白空行
- Linux中删除文本文件中所有的空行
- VC编程实现:删除一个文本文件中的空行
- C#--删除剪贴板中文本空行
- editplus删除空行
- 如何删除空行
- word中删除空行
- 删除文件空行
- 删除word中的空行
- vim 删除所有空行
- vim 删除连续空行
- 删除excel空行数据
- vb如何删除空行
- Android Fragment完全解析,关于碎片你所需知道的一切
- 精通 CSS+DIV 网页样式与布局 51
- react native触摸遥控器解决方案
- table 边框线设置
- win10 C盘超过50G?教你如何对C盘瘦身!
- C++删除文本文件空行
- MySQL5.7改配置文件服务无法启动解决方法
- noip2016 Day1 T3:换教室 (期望值+floyd+dp)
- 第14周项目1-(1)验证折半查找算法
- CSS 优先级 & 伪元素
- applicationContext-scheduler的xml配置
- Windows下Node.js的安装与配置
- [Android基础]Android总结篇
- 精通 CSS+DIV 网页样式与布局 52