fstream系列的实现在平台之间是否有所不同?

时间:2018-05-31 11:42:37

标签: c++

我正在阅读http://utf8everywhere.org/#how.files

  

永远不要将std :: string或const char * filename参数传递给fstream系列。 MSVC CRT不支持UTF-8参数,但它有一个非标准扩展,应按如下方式使用:   ...
  我们将不得不手动删除转换,当MSVC对fstream的态度发生变化时。

强调我的。

强调文本是否表明 fstream系列的实施在平台之间有所不同?是否表明在Linux系统下我可以安全地将 utf-8 std :: string或char 传递给 fstream系列?为什么C ++文档没有注意到平台差异http://en.cppreference.com/w/cpp/io/basic_fstream

新手确实需要一些确认,所以如果你能直接回答我的问题并添加一些解释,我会非常感激。

1 个答案:

答案 0 :(得分:1)

首先,标准库是作为编译环境的一部分提供的。这意味着由于有许多编译器编辑器,因此标准库有许多不同的实现。只需要所有人都要尊重标准。但是,Microsoft和gcc带有标准库的不同实现。话虽这么说,您可以使用MinGW安装gcc完整开发环境,即使在Windows上也不会卡在MSVC中。

但是,显示UTF8文本的问题不仅与stream库实现有关,而且与底层终端窗口有关。无法正确显示UTF-8文本的部分是承载cmd.exe shell的Windows控制台。而这部分并不依赖于所使用的开发工具。