使代码(更多)跨平台

我试图让我的(当前在windows上工作)代码更独立一些。 这个小片段用于打开文本文件(用于阅读/写作)。

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

在Windows上,我使用了微软的Visual Studio

char* filename("c:xD0x92.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,而是一个Visual Studio(只有?)扩展。 然而,当我尝试在Windows上首先将宽字符串转换为UTF-8 std :: string并以fstream无法识别文件名的方式打开文件时。
那么什么是跨平台解决方案? - 我是否应该期望std :: fstream始终接受宽字符输入? 或者我应该在Windows上期待这一点?

如果possix系统不使用横幅作为目录; 他们使用什么?

链接地址: http://www.djcxy.com/p/54645.html

上一篇: Making code (more) cross platform

下一篇: How to open unicode file with ifstream using mingw under Windows?