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】

相关文章
|
6月前
|
监控 C#
55.c#:file类
55.c#:file类
116 1
|
6月前
|
存储 C++
CPP的基本输入输出流
CPP的基本输入输出流
73 0
|
2月前
|
Java Linux Windows
File类的使用
本文介绍了Java中File类的使用,包括其静态成员变量、构造方法、常用方法,以及如何通过文件过滤器来查找特定类型的文件。
File类的使用
|
6月前
|
C++ 开发者
深入探索CPP的基本输入输出流
深入探索CPP的基本输入输出流
48 0
|
3月前
|
API
|
5月前
|
编译器 C语言 C++
C++中.h和.hpp文件有什么区别?
C++中.h和.hpp文件有什么区别?
|
6月前
|
C++
cpp ofstream ifstreram binary 文档读写
cpp ofstream ifstreram binary 文档读写
40 0
|
存储 C语言 iOS开发
【C++】标准库 - 文件的读写 i/ofstream
本文章介绍 C++ 标准库中处理文件读写的 fstream ,以及其中的一些使用
195 0
File类的了解和使用
File类的了解和使用
153 0
File类的了解和使用
File类的使用(一)下
File类的使用(一)
168 0
File类的使用(一)下