fstream,FILE之间的选择-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

fstream,FILE之间的选择

简介: 作为一个C++的拥护者,我尽量多学习使用 ifstream, ofstream,并从中感受到了它的直观易用。而且其对于普通英文字符串输入输出的支持,体现出了C++语言的智慧。

作为一个C++的拥护者,我尽量多学习使用 ifstream, ofstream,并从中感受到了它的直观易用。而且其对于普通英文字符串输入输出的支持,体现出了C++语言的智慧。

但当你想打开Unicode编码的文件路径,当你想要输入Unicode编码中文字符,当你想要用wofstream输出二进制流的时候,你会发现,你对它的了解还不够,它并不总能像你想象那样工作。

之所以会产生这种结果,有两点原因:

  1. C++ locale默认是英文环境,英文环境会导致无法识别Unicode编码。
  2. fstream 的 opterator>> 操作符,其实是字符串操作符。有时候你会以为它可以帮你处理二进制流。当然fstream也支持二进制流操作,但是wfstream却必须以wchar_t的大小为单位流化,导致流化的数量必须写成 sizeof( int ) / 2.
通过我自身的使用情况,我总结:
  1. fstream接口操作多种多样,但容易引起bug,因为你不总是在处理文件,时间久了,会忘记fstream的一些重要特性。
  2. FILE接口操作统一,虽然有时对于简单功能,需要多写一些代码,但是简单统一,使得你总是很了解它,出错的概率较低。
最后总结:如果你不能十分确信自己很了解fstream所有特性,且你需要短时间内写出bug尽量少的代码,那么我向你推荐【FILE, fread, fwrite】

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: