【发布时间】:2015-06-22 06:40:08
【问题描述】:
我有一个通用函数:
bool WriteFile(const string& strFileContent, const wpath& pathFile)
在这个函数中,我有以下一行:
std::ofstream outStream(pathFile.string().c_str(), std::ios::out);
由于这个函数是通用的,我有时用它来写二进制文件。我注意到使用openmode std::ios::out 不是二进制数据的正确选择,并且写入的文件与我预期的不同,这意味着文件不等于strFileContent 中定义的实际数据。
所以我做了这个简单的修复:
std::ofstream outStream(pathFile.string().c_str(), std::ios::out | std::ios::binary);
这解决了二进制文件的问题,也适用于文本文件。
问题
if 开放模式std::ios::out | std::ios::binary 适用于二进制和文本数据,其中一种不是多余的吗?
如果是这样,我应该总是使用std::ios::out | std::ios::binary吗?
如果不是,在哪些情况下不建议使用std::ios::out | std::ios::binary?
【问题讨论】:
-
否决票和接近票?有人处于不良模式?
-
Binary and text modes 在这里提问之前先阅读参考文档有什么问题?
-
知道了。删除这个。
-
什么是
wpath?它是宽字符集吗?这是否意味着你真的在写一个宽字符串?