fstream 中判断是否成功打开文件
from: http://blog.csdn.NET/zhtsuc/article/details/2938614
关于C++ fstream的一个容易使用出错的地方
关于c++ 中 文件流的两个类,ifstream 和ofstream,大家也许并不陌生。
其负责c++的文件输入流 和 文件输出流。基本上所以语言都会提供类似的文件输入流 和文件输出流类。
但当大家学习了Java,或者c#后,大家就很容易用错这个类,把三种语言混淆。
在java 和 c#中,关于打开输入文件流,或者输出流,都是通过抛出异常来标志打开失败。
而且大家对这种思想也很容易接受。
所以在c++中如下的错误使用很是常见。
- try
- {
- ifstream fin("filename");
- //TODO:
- }
- catch(exception)
- {
- cout << "fail to open file" << endl;
- }
其实c++的ifstream,ofstream和c#,java的文件流类在这一点上并不相同。
当文件打开失败或者其他错误时,并没有异常抛出。那读者就会想,“如何判断文件打开成功呢”。
因为肯定要确定文件打开成功,才能操作文件流对象。
如下为一般的正确使用方法。
- ifstream fin("filename");
- if (!fin)
- {
- cout << "fail to open the file" <<endl;
- return -1;//或者抛出异常。
- }
- else
- {
- cout << "open the file successfully" << endl;
- }
这时候有人又有疑问了。fin是一个ifstream对象,不可能是0,或者NULL啊。怎么会有!fin的这个判断语句成功呢。
正如我们所以疑问的,!fin并不是说判断fin是否为0或者为空。而是ifstream类重载了!操作符,所以当我们如此使用的时候,是!操作符函数返回一个bool变量来标记是否成功。
类似的对于ofstream也是如此。
其实在c++中,很多类都是通过重载操作符来完成一些转化的。读者可以常常留意。
other: http://blog.csdn.net/seadplus/article/details/7802346
fstream 中判断是否成功打开文件的更多相关文章
- Python中的用open打开文件错误,FileNotFoundError: [Errno 2] No such file or directory:
学习python的文件处理,刚开始打开文件,代码如下 f = open('test_file.txt', 'r', encoding='UTF-8')RES = f.readlines()print( ...
- python中判断readline读到文件末尾
fp = open('somefile.txt') while True: line = fp.readline() if not line: #等价于if line == "": ...
- 在Linux命令行中以图形化窗口打开文件夹
Linux 系统中也有类似的命令.Ubuntu 发行版的命令行中,我们可以使用 nautilus 命令来打开指定目录的图形化窗口界面.类似下面命令这样使用: nautilus /home/testPr ...
- 总结C语言在嵌入式开发中应用的知识点(文件数据的加密与解密)
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255) ...
- 使用JFileChooser打开文件
-----------------siwuxie095 工程名:TestFileChooser 包名:com.siwuxie095.fi ...
- C#选择文件、选择文件夹、打开文件
1.选择文件用OpenDialog OpenFileDialog dialog = new OpenFileDialog(); dialog.Multiselect = true;//该值确定是否可以 ...
- C/C++ 中判断某一文件或目录是否存在
方法一:C++中比较简单的一种办法(使用文件流打开文件) #include <iostream> #include <fstream> using namespace std; ...
- 从零开始学C++之IO流类库(二):文件流(fstream, ifstream, ofstream)的打开关闭、流状态
一.文件流 ofstream,由ostream派生而来,用于写文件 ifstream,由istream派生而来, 用于读文件 fstream,由iostream派生而来,用于读写文件 二.打开文件 说 ...
- C# 选择文件、选择文件夹、打开文件(或者文件夹) 路径中获取文件全路径、目录、扩展名、文件名称 追加、拷贝、删除、移动文件、创建目录 修改文件名、文件夹名!!
https://www.cnblogs.com/zhlziliaoku/p/5241097.html 1.选择文件用OpenDialog OpenFileDialog dialog = new Ope ...
随机推荐
- hw 要的是螺丝钉
日前突然接到华为HR的电话,叫我去面试。本来我的工作和工资收入等各方面在本地也还算可以,没有想要跳槽。但是本着去看看有没有更好机会的想法就去了。 9:30到了现场后,在那里等了很久,一个考官上来问了 ...
- jmeter 如何将上一个请求的结果作为下一个请求的参数——使用正则提取器
1.简介 Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域. 它可以用于测试静态和动态资源例如 ...
- 聚合数据董铭彦:小程序开发的兴起将带火API数据交易
2016中关村大数据日活动近日在京举办,今年新进驻北京的聚合数据受邀参与,在13日举行的大数据交易专场论坛上,聚合数据副总裁董铭彦与参会嘉宾以"共筑数据交易产业生态,共享大数据时代红利&qu ...
- apache poi导出excel报表
Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能.POI为"P ...
- 用U3D寻找看电视的感觉!!
调整 Camera 的角度和你一致, 找到看电视的感觉了吧?! Y 224度 再调下X就行
- Zookeeper的学习材料
https://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/ https://www.zhihu.com/question/351 ...
- 审核被拒(后台定位,autio,voip,发表朋友圈)
APP上线审核被拒那些事(一) 2.3 - Apps that do not perform as advertised by the developer will be rejected 2.3 D ...
- net面试 ASP.NET页面传值的各种方法和分析 (copy)
Web页面是无状态的, 服务器对每一次请求都认为来自不同用户,因此,变量的状态在连续对同一页面的多次请求之间或在页面跳转时不会被保留.在用ASP.NET 设计开发一个Web系统时, 遇到一个重要的问题 ...
- AFNetworking 基本使用
AFNetwork是一个轻量级的网络请求api类库.是以NSURLConnection, NSOperation和其他方法为基础的. 下面这个例子是用来处理json请求的 3如何选择AFNetwork ...
- 关于iOS9,Xcode7以上的安全性问题
目前伴随着苹果方面对安全性方面的重视,在Xcode开发过程中有时候会出现数据解析在view上不显示的问题 这是在iOS9,Xcode7以后苹果方面为了保护用户安全而采用的用户发送请求机制,那么在开发中 ...