posts - 9,comments - 21,trackbacks - 0

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    const char filename[] = "mytext.txt";
    ofstream o_file;
    ifstream i_file;
    string out_text;
   
    //写
    o_file.open(filename);
    for (int i = 1; i <= 10; i++)
    {
         o_file << "第" << i << "行\n"; //将内容写入到文本文件中
    }
    o_file.close();
   
    //读
    i_file.open(filename);
    if (i_file.is_open())
    {
                         while (i_file.good())
                         {
                              i_file >> out_text; //将读取的内容存储到变量out_text中
                              cout << out_text << endl; //在控制台输出读取的内容。为什么最后一行的内容会出现两次
                         }
    }
    else
        cout << "打开文件:" << filename << " 时出错!";
    i_file.close();
   
    system("PAUSE");
    return 0;
}

为什么总会将最后一行显示两遍?我的循环似乎没错呀。

posted on 2006-04-12 15:01 蕃豆仁 阅读(26570) 评论(4)  编辑 收藏 引用 所属分类: C++ primer plus读书笔记

FeedBack:
# re: C++读写文本文件
2007-08-29 16:11 | zp_cool
简单的文本读写:

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
const char filename[]="test.doc";
ofstream o_file;/* 输出流:将数据从内存输出其中ofstream是将数据输出到文件,因此对于文件来说是“写”*/
ifstream i_file;/*将数据输入到内存,其中ifstream是说输入的数据在文件中,因此对于文件来说是“读”*/
string out_text;

//写
o_file.open(filename);
for(int i =0;i<=12;i++)
{
o_file<<"第"<<i<<"行\n";//将内容写入文本
}
o_file.close();
//读
i_file.open(filename);
if(i_file.is_open())
{

while(i_file>>out_text)
{
cout << out_text << endl;
}

}
else
cout<<"打开文件:"<<filename<<"时出错!";
i_file.close();
system("PAUSE");

return 0;

}
  回复  更多评论
  
# re: C++读写文本文件
2008-07-08 21:53 | ♂坑蒙拐骗
偶尔看到你的博客.
关于cout << out_text << endl; //在控制台输出读取的内容。为什么最后一行的内容会出现两次 这个问题原因在于--eof函数的判定时间问题.
许多地方对eofO函数的解释都是,“判定是否已经读到文件的结尾,如果到文件结尾,该函数返回值为1,否则返回为0”。
事实上,文件本身是没有文件结束符EOF的。当读取文件中最后一个有效字符后,虽然文件指针已指向空白了,但这时还不知道是否到了文件末尾,只有再读取一次文件,待读不到任何内容了,这时输入流设置eofbit位,eof的返回值才为l,而空的内容是不会被提取到变量的,故最后一次读到变量中的内容又被重复输出了。  回复  更多评论
  
# re: C++读写文本文件
2010-01-26 20:57 | kidd
讲的真详细!@♂坑蒙拐骗
  回复  更多评论
  
# re: C++读写文本文件
2011-07-19 19:06 | 贝壳里的海
文件本身是没有文件结束符EOF的。当读取文件中最后一个有效字符后,虽然文件指针已指向空白  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理