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

c++ 创建文件

zhongjiezhe 发布于 2011-07-06 21:43, 1095 次点击

#include<fstream.h>
#include<stdlib.h>


int main()
{
    ifstream ifile;
    ifile.open("实验文本.dat",ios::binary);
    if(!ifile)
        cout<<"文件不存在"<<endl;
    else;
    system("pause");
    return 0;
}

以上的程序可以正确创建一个二进制文件

#include<iostream>
#include<fstream>
#include<stdlib.h>

using namespace std;

int main()
{
    ifstream ifile;
    ifile.open("实验文本.dat",ios::binary);
    if(!ifile)
        cout<<"文件不存在"<<endl;
    else;
    system("pause");
    return 0;
}

结果显示文件不存在,没有创建相应的二进制文件

两个程序只有声明头文件的方式不一样,怎么理解产生的结果呢
11 回复
#2
ToBeStronger2011-07-06 23:09
#include<fstream>已经包含#include<iostream>,所以不应该再写#include<iostream>

#3
rjsp2011-07-07 08:17
ifstream 是从文件中读取信息,所以它不会去创建文件。因为对于一个空文件,你想读什么?
#4
zhongjiezhe2011-07-07 09:57
回复 2楼 ToBeStronger
在dev c++中不写include<iostream>编译不成功
#5
specilize2011-07-07 14:42
#include<fstream.h>
#include<stdlib.h>
int main()
{
    ifstream ifile;
    ifile.open("实验文本.dat",ios::binary);
    if(!ifile)
        cout<<"文件不存在"<<endl;
    else;
    system("pause");
    return 0;
}
楼主确定这个程序可以正确创建一个二进制文件
ios,cout都没声明,怎么可能会编译通过,所以上面这个程序应该是要包含<iostream.h>的
结果两个程序都一样,都是文件不存在,解释如rjsp
ToBeStronger说#include<fstream>已经包含#include<iostream>,所以不应该再写#include<iostream>    这话不对吧
#6
zhongjiezhe2011-07-07 19:42
回复 5楼 specilize
我用的是VC6.0,真的创建了一个实验文本.dat的文件,千真万确
#7
ToBeStronger2011-07-07 21:05
回复 4楼 zhongjiezhe
我没用过DEVC++,我用VC6.0,果断运行成功创建了文件.....,应该是编译器问题
#8
ToBeStronger2011-07-07 21:13
同学,你第二个fstream为什么不加.h,
#include<iostream>
#include<fstream.h>
#include<stdlib.h>

//using namespace std;

int main()
{
    ifstream ifile;
    ifile.open("实验文本.dat",ios::binary);
    if(!ifile)
        cout<<"文件不存在"<<endl;
    else;
    system("pause");
    return 0;
}
我这样改过,能运行
#9
ToBeStronger2011-07-07 21:16
回复 5楼 specilize
我说#include<fstream>已经包含#include<iostream>,所以不应该再写#include<iostream>   意思是不用再显示的包含iostream,即头文件不用再写#include<iostream>,当然你写也可以
#10
specilize2011-07-07 21:42
回复 6楼 zhongjiezhe
这是一个问题,应该是编译器的问题
#11
specilize2011-07-07 22:12
回复 9楼 ToBeStronger
实际上,fstream是继承了iostream,而不是包含iostream,这是两个不同的概念的
#12
zhongjiezhe2011-07-08 09:19
关于编译器的问题,就讨论到这里吧,谢谢大家的帮忙
1