ifsteam inflie( FileName.c_str() ) and infile.open( FileName.c_str() ).....?

Crazy_hand 2009-04-22 02:18:51
这两种打开文件的方法有什么不同的地方,
书上说的好像是infile( FileName.c_str() ) 是用构造函数初始化打开的,而infile.open( FileName.c_str() ) 是由istream的成员函数 open()函数打开的是吗????????????
...全文
443 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
beyond071 2009-04-22
  • 打赏
  • 举报
回复
两种用法是等价的。
ifstream infile("filename");//调用了ifstream的带参数的构造函数,将输入流与filename文件相关联
ifstream infile;//先调用默认构造函数建立一个ifstream流对象
infile.open("filename");//将输入流与filename文件相关联
lingyin55 2009-04-22
  • 打赏
  • 举报
回复
这两种打开文件的方法有什么不同的地方,
书上说的好像是infile( FileName.c_str() ) 是用构造函数初始化打开的,而infile.open( FileName.c_str() ) 是由istream的成员函数 open()函数打开的是吗????????????

其实没有什么差别吧。
infile( FileName.c_str() )这种就像定义后直接就初始化。
infile.open( FileName.c_str() )定义后没有直接初始化而是在程序中利用函数赋值。
Jinhao 2009-04-22
  • 打赏
  • 举报
回复
这两个效果是一样,不用去管这点差别。

一般习惯是直接构造的时候就打开文件。但有时会用同一个对象打开不同的文件,这时就用open

比如

const char * files[10] = {.....};

for(int i = 0; i < 10; i++)
{
ifs.open(files[i]);
....
ifs.close();
}
Crazy_hand 2009-04-22
  • 打赏
  • 举报
回复
书上一会用第一个,一会用第二个。。。(C++ primer)第八章

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧