注册 登录
编程论坛 C++教室

ifstream怎么用啊,ofstream一学就会,可是ifstream没有输出和创建文件啊

tttt182 发布于 2013-09-15 21:27, 3849 次点击
rt,求解
9 回复
#2
tttt1822013-09-15 21:58
#include"iostream"
#include"fstream"
using namespace std;
int main()
{
    int a;
    ifstream infile(C:\\123.txt);
    ifstream>>a;
    ifstream.close();
}
就像这样子,为什么没有输出,也没有创建文件呢
#3
TonyDeng2013-09-15 22:29
你在银行中没存款,能拿到钱吗?
#4
blueskiner2013-09-16 07:31
我解释下,ifstream目的是为了从存储介质中读入内存的,ofstream是从内存输出到存储介质。
c:\\123.txt  如果这个文件不存在,ifstream对象的介质文件就为空,你希望一个空文件给你输出啥?
#5
tttt1822013-09-16 23:39
哦,原来如此,我明白了,谢谢
#6
tttt1822013-09-16 23:52
还有一个问题

#include"iostream"
#include"fstream"
using namespace std;
int main()
{
    char data;
    ifstream infile("C:\\456.txt");
    while(infile)
    {
        infile.get(data);
        cout.put(data);
    }
    cout<<endl;
    infile.close();
}
我的456.txt里是“Tomorrow is sunny”,为什么输出是“Tomorrow is sunnyy”?
#7
blueskiner2013-09-17 05:47
我之前也遇过这个问题。

如果fin>>不能再读入数据了,才发现到了文件结尾,这时才给流设定文件结尾的标志,此后调用eof()时,才返回真.
假设
    find>>x; //此时文件刚好读完最后一个数据(将其保存在x中)
    但是,这时fin.eof()仍为假,因为 fin流的标志eofbit是False,fin流此时认为文件还没有到末尾,只有当流再次读写时 fin>>x ,发现已无可读写数据,此时流才知道到达了结尾,这时才将标志eofbit修改为True,此时流才知道文件到了末尾。
    也就是说,eof在读取完最后一个数据后,仍是False,当再次试图读一个数据时,由于发现没数据可读了,才知道到末尾了,此时才修改标志,eof变为True。

以上内容为网摘。
程序代码:

        char data;
    std::ifstream infile("D:\\456.txt");
    while (infile.peek() != EOF) {
        infile.get(data);
        std::cout.put(data);
    }
    std::cout<<endl;
    infile.close();
#8
rjsp2013-09-17 10:56
回复 6楼 tttt182
程序代码:
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    ifstream infile("C:\\456.txt");

    for( char data; infile.get(data); )
    {
        cout.put( data );
    }
    cout << endl;

    infile.close();
    return 0;
}

#9
tttt1822013-09-17 22:14
谢谢各位的大力帮忙,c++真是博大精深啊,通过这个例子,我又学习了很多新东西,并且发现有更多的东西是我还没有学会的,以后要更努力一些才行啊,以后还要多多麻烦大家,争取早日达到大家这样的高度,更多的去帮助别人,说的有点多了,反正就这意思,谢谢。
#10
做个低调的人2013-09-27 14:02
不错
1