C++ Demo 001: 读取一个从命令行指定的文件,输出文件内容到显示器,并且给每一行输出添加一个行号
2010-09-16 09:42
2591 查看
缘起:
这是一个朋友让帮忙写的,其实程序本身很简单,但是要求完全用C++ 风格来实现,尽量不要看到C 的影子,OK,那就试试看咯。
题目:
写一个程序,读取一个利用命令行指定的文本文件,输出文件内容到显示器,并且给每一行输出添加一个行号
环境:
Windows XP Professional sp3 下面用 GNU GCC 的编译器编译。
采用这个编译器因为它是开源的,很容易下载到,而且Linux 上也可以用,还有一个比较关键的,它支持标准C++。推荐使用!*^_^*
实验步骤:
1,新建一个文本文件,命名 "add_line_number.cpp"。
2,添加如下代码到文件中:
3,编译 "add_line_number.cpp" 。
4,OK,应该会在与 "add_line_number.cpp" 相同文件夹下生成 main.exe 文件。
打开命令行提示符窗口 ( 开始 -> 运行 -> cmd ) ,接着输入 main add_line_number.cpp ,输出我们这个小程序的源代码。没问题的话,应该可以看到最终的效果了。
讨论:
小程序到此就结束了,程序很简单,不多解释了,我会慢慢添加关于 C++ 标准库的小练习,穿插着就可以把一些需要熟悉的类或者容器的基本用法给弄明白了。
好了,回来这个小程序。是否还有其他的方法来高效读取文件呢?对于大体积的文件,又如何呢?
程序尽管简单,但是需要讨论的问题不少,比如:
1. 如果是一个电话号码的记事本,格式形如:
张三, 13955665566
李四, 15812345678
王二, 13612344321
……
其中,姓名可能是重复的,但是电话号码是唯一的,还有可能由于记录人的疏忽,记录了一条重复的记录。那如何去重,并排序后输出呢?
2. 这里没有对文件进行异常处理,应该加上,尽管是小练习。这里,我投机一把,嘿嘿,直接让他退出了。
3. 正在想 …… -_-
总结:
本程序就完全用 C++ 的方式来实现题目的要求了,看不到C 的影子,其实,也就是用C++ 标准库里面的 string 去代替了 C 中可能会用的 char * 以及字符数组。
这是一个朋友让帮忙写的,其实程序本身很简单,但是要求完全用C++ 风格来实现,尽量不要看到C 的影子,OK,那就试试看咯。
题目:
写一个程序,读取一个利用命令行指定的文本文件,输出文件内容到显示器,并且给每一行输出添加一个行号
环境:
Windows XP Professional sp3 下面用 GNU GCC 的编译器编译。
采用这个编译器因为它是开源的,很容易下载到,而且Linux 上也可以用,还有一个比较关键的,它支持标准C++。推荐使用!*^_^*
实验步骤:
1,新建一个文本文件,命名 "add_line_number.cpp"。
2,添加如下代码到文件中:
#include <iostream> #include <fstream> #include <string> using namespace std; int main(int argc, char** argv) { if(argc != 2) { cout << "Please use command like: my_print add_line_number.cpp " << endl; return 1; } fstream fFile(argv[1], ios::in | ios::out); //事实上,后面的打开模式可以不写,这是fstream 打开文件的默认方式 if(!fFile.is_open()) { cout << "Open file error! Application will exit." << endl; return 2; } string strTextLine; string::size_type i = 1; while(getline(fFile, strTextLine, '\n')) { if(i < 10) { cout << " " << i++ << ".| " << strTextLine << endl; } else { cout << i++ << ".| " << strTextLine << endl; } } fFile.close(); return 0; }
3,编译 "add_line_number.cpp" 。
\cpp> g++ add_line_number.cpp -o main
4,OK,应该会在与 "add_line_number.cpp" 相同文件夹下生成 main.exe 文件。
打开命令行提示符窗口 ( 开始 -> 运行 -> cmd ) ,接着输入 main add_line_number.cpp ,输出我们这个小程序的源代码。没问题的话,应该可以看到最终的效果了。
讨论:
小程序到此就结束了,程序很简单,不多解释了,我会慢慢添加关于 C++ 标准库的小练习,穿插着就可以把一些需要熟悉的类或者容器的基本用法给弄明白了。
好了,回来这个小程序。是否还有其他的方法来高效读取文件呢?对于大体积的文件,又如何呢?
程序尽管简单,但是需要讨论的问题不少,比如:
1. 如果是一个电话号码的记事本,格式形如:
张三, 13955665566
李四, 15812345678
王二, 13612344321
……
其中,姓名可能是重复的,但是电话号码是唯一的,还有可能由于记录人的疏忽,记录了一条重复的记录。那如何去重,并排序后输出呢?
2. 这里没有对文件进行异常处理,应该加上,尽管是小练习。这里,我投机一把,嘿嘿,直接让他退出了。
3. 正在想 …… -_-
总结:
本程序就完全用 C++ 的方式来实现题目的要求了,看不到C 的影子,其实,也就是用C++ 标准库里面的 string 去代替了 C 中可能会用的 char * 以及字符数组。
相关文章推荐
- Python 实现在对一个目录下所有文件,指定某一行之后添加内容(批处理脚本)
- 使用Java的输入输出流技术将Input.txt的内容逐行读出,每读出一行就顺序为其添加行号(从1开始,逐行递增),并写入到另一个文本文件Output.txt中
- 根据日期 读取三个csv不留指定日期的内容 新保存一个文件
- shell:读取文件的每一行内容并输出
- 读取文件的每一行内容并输出 的shell脚本实现
- 把命令行参数中的前一个文件名标识的文件, 复制到后一个文件名标识的文件中, 如命令行中只有一个文件名则把该文件写到标准输出文件(显示器)中
- shell:读取文件的每一行内容并输出
- shell:读取文件的每一行内容并输出
- xml解析2:使用递归解析给定的任意一个xml文档并且将其内容输出到命令行上
- python读取文件同时输出行号和内容
- C++ 读取文件内容到指定类型的变量方法
- 通过sed在文件指定行号后添加一行
- 一个关于读取指定路径下文件名称的小工具(C++)
- shell读取文件的每一行内容并输出【转】
- shell:读取文件的每一行内容并输出
- 编写一个程序,从标准输入一行一行地读取文本,并完成如下任务:如果文件中有两行或更多行相邻的文本内容相同,那么就打印其中一行,其余行不打印。
- shell:读取文件的每一行内容并输出
- shell:读取文件的每一行内容并输出
- c++中把一个文件内容写入指定的文件中
- (转)shell:读取文件的每一行内容并输出