使代码(更多)跨平台

时间:2014-08-08 23:03:12

标签: c++ c++11 unicode filesystems

我正在尝试让我(目前正在处理Windows)的代码更加独立于平台。这个小片段用于打开文本文件(用于读/写)。

与现代pc一样,许多文件都存储为unicode。现在在这个问题中,我特别想知道打开这样一个文件的正确方法是什么。 (文件名可以是unicode)。

在Windows上,使用microsoft visual studio,我使用了

char* filename("c:\\\xD0\x92.txt");

#ifdef _WIN32
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
#else
std::wstring_convert<std::codecvt_utf8<wchar_t>> converter; 
//non windows wstring = utf8
#endif

std::wstring wfilename(converter.from_bytes(filename));


std::fstream fstream(wfilename);

但是我刚刚意识到这不是标准的C ++ 11,而是视觉工作室(仅限?)扩展。但是,当我尝试在Windows上首先将宽带转换为UTF-8 std :: string并以这种方式打开文件时,fstream不会识别文件名。
那么什么是跨平台解决方案? - 我是否应该期望std :: fstream始终接受宽带输入?或者,我是否应该始终在Windows上预期这一点?

如果possix系统不在他们的目录中使用宽字符串;他们用什么?

0 个答案:

没有答案