原文地址:  http://blog.csdn.net/stpeace/article/details/12404925

如下代码均在Windows/VC++6.0下测试通过, 请一定注意linux和Windows文件格式的区别

先用C语言写一个丑陋的程序:

[cpp] view plain copy
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5. FILE *fp;
  6. if(NULL == (fp = fopen("1.txt", "r")))
  7. {
  8. printf("error\n");
  9. exit(1);
  10. }
  11. char ch;
  12. while(EOF != (ch=fgetc(fp)))
  13. {
  14. printf("%c", ch);
  15. }
  16. fclose(fp);
  17. return 0;
  18. }

你只能看到结果,却没法利用每一行。 我们来改为:

[cpp] view plain copy
  1. // VC++6.0
  2. #include <stdio.h>
  3. #include <string.h>
  4. int main()
  5. {
  6. char szTest[1000] = {0};
  7. int len = 0;
  8. FILE *fp = fopen("1.txt", "r");
  9. if(NULL == fp)
  10. {
  11. printf("failed to open dos.txt\n");
  12. return 1;
  13. }
  14. while(!feof(fp))
  15. {
  16. memset(szTest, 0, sizeof(szTest));
  17. fgets(szTest, sizeof(szTest) - 1, fp); // 包含了\n
  18. printf("%s", szTest);
  19. }
  20. fclose(fp);
  21. printf("\n");
  22. return 0;
  23. }

这样, 我们就是整行读取了。

感觉C的读取方法有点丑陋,还是看看C++吧:

[cpp] view plain copy
  1. #include <fstream>
  2. #include <string>
  3. #include <iostream>
  4. using namespace std;
  5. int main()
  6. {
  7. ifstream in("1.txt");
  8. string filename;
  9. string line;
  10. if(in) // 有该文件
  11. {
  12. while (getline (in, line)) // line中不包括每行的换行符
  13. {
  14. cout << line << endl;
  15. }
  16. }
  17. else // 没有该文件
  18. {
  19. cout <<"no such file" << endl;
  20. }
  21. return 0;
  22. }

当然,你可以对上述程序进行修改,让1.txt中的每一行输入到2.txt中,如下:

[cpp] view plain copy
  1. #include <fstream>
  2. #include <string>
  3. #include <iostream>
  4. using namespace std;
  5. int main()
  6. {
  7. ifstream in("1.txt");
  8. ofstream out("2.txt");
  9. string filename;
  10. string line;
  11. if(in) // 有该文件
  12. {
  13. while (getline (in, line)) // line中不包括每行的换行符
  14. {
  15. cout << line << endl;
  16. out << line << endl; // 输入到2.txt中
  17. }
  18. }
  19. else // 没有该文件
  20. {
  21. cout <<"no such file" << endl;
  22. }
  23. return 0;
  24. }

结果, 2.txt和1.txt中的内容完全一致,你可以用Beyond Compare比较一下,我比较过了。

看来上述程序还能实现文件的复制呢,如下:

[cpp] view plain copy
  1. #include <fstream>
  2. #include <string>
  3. #include <iostream>
  4. using namespace std;
  5. void fileCopy(char *file1, char *file2)
  6. {
  7. // 最好对file1和file2进行判断
  8. ifstream in(file1);
  9. ofstream out(file2);
  10. string filename;
  11. string line;
  12. while (getline (in, line))
  13. {
  14. out << line << endl;
  15. }
  16. }
  17. int main()
  18. {
  19. fileCopy("1.txt", "2.txt");
  20. return 0;
  21. }

当然了,上述程序只能针对文本文件(不仅仅是.txt),对其它类型的文件,不适合。

如何利用C/C++逐行读取txt文件中的字符串(可以顺便实现文本文件的复制)相关推荐

  1. 逐行读取txt文件中_Spring系列八:Spring 中读取文件-ResourceLoaderAware

    重叠泪痕缄锦字,人生只有情难死. 概述 本文将了解资源或文件(例如文本文件.XML文件.属性文件或图像文件)加载到Spring应用程序上下文中的不同实现.Spring ResourceLoader为我 ...

  2. python读取字符串指定位置字符_python读取txt文件中特定位置字符的方法

    python读取txt文件中特定位置字符的方法 如下所示: # -*- coding:utf-8 -*- import sys reload(sys) sys.setdefaultencoding(' ...

  3. 学python看什么书好1002无标题-如何使用pandas读取txt文件中指定的列(有无标题)

    最近在倒腾一个txt文件,因为文件太大,所以给切割成了好几个小的文件,只有第一个文件有标题,从第二个开始就没有标题了. 我的需求是取出指定的列的数据,踩了些坑给研究出来了. import pandas ...

  4. python导入txt文件并绘图-Python实现读取txt文件中的数据并绘制出图形操作示例

    本文实例讲述了Python实现读取txt文件中的数据并绘制出图形操作.分享给大家供大家参考,具体如下: 下面的是某一文本文件中的数据. 6.1101,17.592 5.5277,9.1302 8.51 ...

  5. python按列读取txt文件_如何使用pandas读取txt文件中指定的列(有无标题)

    最近在倒腾一个txt文件,因为文件太大,所以给切割成了好几个小的文件,只有第一个文件有标题,从第二个开始就没有标题了. 我的需求是取出指定的列的数据,踩了些坑给研究出来了. import pandas ...

  6. python读取指定路径txt文件-如何使用pandas读取txt文件中指定的列(有无标题)

    最近在倒腾一个txt文件,因为文件太大,所以给切割成了好几个小的文件,只有第一个文件有标题,从第二个开始就没有标题了. 我的需求是取出指定的列的数据,踩了些坑给研究出来了. import pandas ...

  7. 用python读取txt文件中的数据并画各类图形展示_Python实现读取txt文件中的数据并绘制出图形操作示例...

    本文实例讲述了Python实现读取txt文件中的数据并绘制出图形操作.分享给大家供大家参考,具体如下: 下面的是某一文本文件中的数据. 6.1101,17.592 5.5277,9.1302 8.51 ...

  8. 【C++】读取txt文件中指定行的内容

    使用c++读取TXT文件中指定行的内容 classification_classes_ILSVRC2012.txt:下载链接 验证: #include <iostream> #includ ...

  9. R语言读取txt文件中的内容

        在RGui中读取.txt文件中的内容,采用函数read.table("xxx.txt",head=TRUE|FALSE); 其中head=TRUE表示含有属性的标题,hea ...

最新文章

  1. Android 自定义View ——Matrix (矩阵)
  2. how to check unsolved conflicts file list in git merge?
  3. 怎么一步步编写简单的PHP的Framework(二十一)
  4. java常见的排序算法_常见排序算法及Java实现
  5. C#仿QQ皮肤系列之-引言
  6. 数据库工作笔记018---Windows下mysql安装_服务无法启动没有报告解决
  7. 人工智能与深度学习概念(5)——目标检测-RCNN
  8. 03day输入及转义符的使用
  9. 教师教育网各网页链接
  10. C# 开发Chrome内核浏览器(WebKit.net)
  11. 魔兽国服修改服务器地址,魔兽国服退役服务器上架暴雪官方商店
  12. php获取m3u8的地址,如何获取各大平台的播放地址(获得优酷的m3u8播放地址)为例...
  13. sublime html代码自动排版,sublime Text3 如何自动排版代码
  14. Pr导入录屏视频产生音画不同步问题的解决方法
  15. 单片微型计算机频率测量实验,毕业论文:频率计系统设计
  16. 《Oracle Concept》第二章 - 19
  17. 华为服务器开虚拟化,华为服务器虚拟化的随笔
  18. python保存图片到指定路径_python 抓取页面数据,并保存图片文本到指定目录文件夹...
  19. 【机器学习笔记】【决策树】【泰坦尼克号幸存者的预测】
  20. HTML5 入门( 一)

热门文章

  1. ajax mysql项目 react_React视频教程来啦,每周末都有前端视频教程学
  2. mysql collation utf8_mysql数据库 表字段 的collation utf8_unicode_ci
  3. java gzip xml_Java GZIPInputStream与GZIPOutputStream的使用示例
  4. MyBatis 源码分析 - 映射文件解析过程
  5. Java synchronized 中的 while 和 notifyAll
  6. WinEdt显示行号
  7. 从0开始学习 GitHub 系列之「初识 GitHub」
  8. 160家优秀国外技术公司博客
  9. 【caffe】OpenCV Load caffe model
  10. python+selenium中webdriver相关资源