您的位置:首页 > 编程语言 > C语言/C++

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,添加如下代码到文件中:

#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 * 以及字符数组。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐