c++新标准中不能用ios::nocreate了,那怎么办

chlyqq 2013-05-03 10:00:28
写了个程序打开一个文件进行读取,若文件不存在提示不存在,用的ofstream file("a.txt",ios::nocreate)
我想在文件不存在的时候也不创建文件,可是提示nocreate已经不能使用了,那该怎么办呢?
...全文
719 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
DUKE-ZB 2015-04-25
  • 打赏
  • 举报
回复
可以用_Noreplace代替
chlyqq 2013-05-03
  • 打赏
  • 举报
回复
根据#1的方法,实现了nocreate的效果,多谢
ri_aje 2013-05-03
  • 打赏
  • 举报
回复
在标准的框框下,基本只能使用 #1 的方案,其他的都的调用系统 api。 ps. 标准不包含 nocreate,这跟 c++11 没关系,c++03 里面也没有。
chlyqq 2013-05-03
  • 打赏
  • 举报
回复
谢谢各位大神,现在就是在linux上用c++写个小的程序,这个不能直接用nocreate还是挺麻烦的
ri_aje 2013-05-03
  • 打赏
  • 举报
回复
引用 3 楼 mujiok2003 的回复:
[quote=引用 1 楼 zdarkalone 的回复:] 先ifstream,失败了说明不存在 就是罗嗦点
失败了说明不了不存在, 可能是没有相应权限。 [/quote] 这种情况下,后面 ofstream 时也会失败,倒是没什么太大影响。
mujiok2003 2013-05-03
  • 打赏
  • 举报
回复
最好适用系统API判断文件是否存在,是否有写权限。
starytx 2013-05-03
  • 打赏
  • 举报
回复
那就用FILE * fp = fopen("" ,"r"); if( NULL == fp)
mujiok2003 2013-05-03
  • 打赏
  • 举报
回复
引用 1 楼 zdarkalone 的回复:
先ifstream,失败了说明不存在 就是罗嗦点
失败了说明不了不存在, 可能是没有相应权限。
mujiok2003 2013-05-03
  • 打赏
  • 举报
回复
VC
 std::ofstream ofs("log", std::ios_base::_Nocreate)
或者用C

FILE* fp = fopen("log", "r+");
Star-light 2013-05-03
  • 打赏
  • 举报
回复
先ifstream,失败了说明不存在 就是罗嗦点

64,637

社区成员

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

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