红猎人技术博客--№曾赛№

“A呀,这是谁家的B孩子呀,光着C子站在D上,EF都没穿,还露着个小GG!"

原创  ifstream 没有 ios::nocreate 属性 收藏

今天在 vs2008 中运行一个小程序的时候,发现了一个小问题,ifstream 的 open 函数中不能用 ios::nocreate 属性。详细见代码:

#include 
#include 
#include 

int main()
{
	using namespace std;
	
	ifstream inFile;

	inFile.open("my.dat",ios::in | ios::nocreate);
	if(!inFile)
	{
		cerr << "不能打开my.dat" << endl;
		exit(1);
	}

	return 0;

}

出现错误:

error C2065: “nocreate”: 未声明的标识符
error C2065: “inFile”: 未声明的标识符

原因:从 vs 2003 开始,微软用一个新的 iostream 替换了原来的。新包中没有 nocreate 标识符。

原来 ifstream  中的 open 函数默认打开就是不创建文件。如果没有这个文件则打开出错,而不是创建文件。详见代码运行结果:

#include 
#include 
#include 

int main()
{
	using namespace std;

	ifstream inFile;

	inFile.open("my.dat",ios::in);
	if(!inFile)
	{
		cerr << "不能打开my.dat" << endl;
		exit(1);
	}

	return 0;

}

运行结果:

未命名

发表于 @ 2009年05月29日 07:28:00 | 评论( loading... ) | 编辑| 举报| 收藏

旧一篇:C++ 控制台无法输入字符串 | 新一篇:指针与引用做参数的不同

  • 发表评论
  • 评论内容:
  •  
Copyright © zengsai
Powered by CSDN Blog