c++编写程序,打开指定的一个文本文件,并能在其中每一行的前面加上行号和一个空格符。文件名为a.txt

越详细越好,最好有注释... 越详细越好,最好有注释 展开
 我来答
拥云庄主
2013-04-25 · TA获得超过2501个赞
知道小有建树答主
回答量:672
采纳率:100%
帮助的人:416万
展开全部

刚写的,看代码:

 #include <time.h>

#include <string>

#include <iostream>

#include <FSTREAM> 

 

using namespace std;

/*函数作用:在指定文件每行前面加行号和空格

实现思路: 考虑到文件内容可能比较大,

   不大可能全部读取到内存中,添加好行号之后再输出

   因此采用建立临时文件,边读边写,最后删除原文件

   重命名临时文件的办法来实现

参数:strFileName,需要转化的文件名路径

*/

int AppendLineFlag(string strFileName)

{

 //输入文件流,用于读取文件内容

 ifstream ifReader;

 //以输入方式打开文件

 ifReader.open(strFileName.c_str(), ios::in);

 if (!ifReader.good())

 {

  //如果打开文件失败,提示错误并退出

  cout<<"Can not open source file:"<<strFileName<<endl;

  return -1;

 }

 //输出文件流

 ofstream ofWriter;

 //原文件名后面加.tmp作为临时文件名

 string strTmpFile = strFileName + ".tmp";

 //以输出方式打开临时文件

 ofWriter.open(strTmpFile.c_str(), ios::out);

 if (!ofWriter.good())

 {

  //如果打开失败,提示错误

  cout<<"Can not open tmp file."<<endl;

  return -1;

 }

 

 string strText;//用于保存原文件每行内容

 int i = 0;//保存行号,从0开始

 //一行行读取原文件,直到结束

 while(getline(ifReader, strText))

 {

  //在原文每行前加行号和空格,并输出

  ofWriter<<i<<" "<<strText<<endl;

  //行号加1

  ++i;

 }

 

 //关闭原文件和临时文件

 ifReader.close();

 ofWriter.close();

 //尝试删除原文件,如果失败,提示错误并退出

 if(0 != unlink(strFileName.c_str()))

 {

  cout<<"Remove file failed."<<endl;

  return -1;

 }

 //尝试重命名临时文件,如果失败,提示错误并退出

 if(0 != rename(strTmpFile.c_str(), strFileName.c_str()))

 {

  cout<<"Rename file failed."<<endl;

  return -1;

 }

 

 return 0;

/*主函数

*/

int main(int argc, char *argv[])

 string strFileName;//需要处理的文件名

 cout<<"Please input file path:"<<endl;

 cin>>strFileName;//由用户输入需要处理的文件名

 

 //调用函数处理

 if (0 != AppendLineFlag(strFileName))

 {

  cout<<"Convert file failed."<<endl;

 }

 else

 {

 

  cout<<"File convert ok."<<endl; 

 }

 

 return 0; 

}

 

测试截图:

 

test.cpp里面的内容就是这个程序源文件的副本

追问
#include  是什么意思。。没学过 
若是不用这个头文件能写不
追答
time.h可以不要,string是C++里面的字符串类,你也可以用字符数组来处理,不过可以存在长度不够或者浪费的情况,string不需要你考虑长度的问题。我这用的都是C++标准库里的东西,要学好C++,这些都是必段要掌握的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式