设为首页 加入收藏

TOP

C++文件操作(六)
2013-04-10 11:39:05 来源: 作者: 【 】 浏览:745
Tags:文件 操作
 
 
      下面,咱们用一个实际的例子来演示一下:首先读取一段话,然后将其输出到文件中:
 
 
[cpp]  
#include <iostream>  
  
#include <fstream>  
  
using namespace std;  
  
   
  
int main()  
  
{  
  
    const int num=255;  
  
    char temp1[num]={0};//初始化数组temp1  
  
    char temp2[num]={0};//初始化数组temp2  
  
    //① 输出数据到文件text.txt中  
  
    ofstream f_out("text.txt");  
  
    cout<<"请输入文本的内容:\n";  
  
    cin.getline(temp1,num,0);  
  
    f_out<<temp1;  
  
    f_out.close();  
  
    //② 将文件text.txt中的内容重新读回屏幕上  
  
    ifstream f_in("text.txt");  
  
    f_in.getline(temp2,num,0);  
  
    cout<<temp2<<endl;  
  
    return 0;  
  
}  
 
  对整个程序的分析:
①  输出数据到文件text.txt中 
      首先我们在第11行定义了一个文件的输出流对象f_out,并用该对象创建了一个text.txt文本文件。之后在程序的第13行采用getline()函数接受文本内容,并将其放到temp1字符数组中。注意,这里的getline()函数的第三个参数为空字符,说明它可以接受空格,并且只有达到文件的末尾才能停止读取用户的键盘输入。好了,如果我们输入完文件之后按下Ctrl+Z,那么接着再次按下Enter回车键就会停止输入。之后在程序的第14行,我们用ofstream的对象fout将缓冲区中的内容输出到文本文件text.txt中。最后关闭这个文件。
②  将文件text.txt中的内容重新读回屏幕上 
      同输出一样,首先我们在程序的第17行定义了一个文件的输入流对象f_in,并用该对象读取了刚刚创建的text.txt文本文件。之后又调用getlin()函数将文件中的内容输出到了字符数组temp2中,之后运用cout来输出temp2数组的内容到屏幕上。这样一来,我们就完成了对文件的输入输出操作。
       其运行的结果如下:
 
 
      OK啦!!!程序输出成功咯!!但是这个程序还有一个小小的瑕疵,注意看上面输出结果,我们可以看到在命令行中“请按任意键继续…”上面居然还有一个回车!这是怎么回事呢?我们并没有在多输出一个回车啊?
 
      其实是有的!!!!注意,我们在“!”之后回了一次车,然后才输出了ctrl+Z,向getline()函数发送了一个文件结束的标志。之后为了让程序结束,又按了一下回车。那么这里面第2次按下的回车由于超出了文件结束符EOF被自动抛弃了,但是,第一次按下的回车,就是!之后的那个回车却没有被丢弃掉,而是被写入了temp1函数中。这个就是问题的所在。所以我们在输出之后,会看到在“请按任意键继续…”上面居然还有一个回车!对于这个问题,解决方法其实很简单,我们只需要把最后一个Enter改成空字符’\0’就可以了。即在程序的13行之后添加上这样两句话:
 
 
int n=strlen(temp1);  
  
temp1[n-1]='\0';  

          

首页 上一页 3 4 5 6 下一页 尾页 6/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C/C++的3种注释方式 下一篇通过变换A B得出xzy 的..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: