我尝试将用Visual Studio 2010编写的项目从Microsoft编译器移植到gcc Cygwin。我的问题是gcc Cygwin还是gcc支持std :: wstring?有没有解决这个问题?
答案 0 :(得分:3)
是。它支持,但并不容易。
要支持wstring,您的平台需要支持一大堆 wchar_t功能。剂适量标准C ++ IOStreams和Locales by Langer和Kreft。
真的不足以说“嘿,我们有wchar_t和wchar_t 性格特征,所以我们可以打开std :: wstring。“平台也是 需要为C ++宽字符I / O提供支持:wistream, wostream,facet,cvt,locale。这就是事情的发展方向 有问题的。
对于Windows上的Cygwin,该平台是Cygwin(它非常酷 POSIX API层)比WinAPI更多。
ASIDE:我不确定MinGW的情况,但是自MinGW使用以来 WinAPI直接而不是像Unix那样具有类似Unix的POSIX API 方法,MinGW可能不在Cygwin的情况下。
Windows支持该功能,但似乎没有人支持 已经经历了Cygwin使用的相当大的努力 那些设施。 (那些是FooW例程,而不是FooA 例程,在WinAPI中。获取语言环境有很多工作要做 魔术才能正常工作。)
此外,Windows使用2个字节的wchar_t。 (以前的UCS-2,来自 统一 1.0时代。现在使用Vista和Win7,它是UTF-16。)让Cygwin使用2字节wchar_t而不是4字节会有点复古 wchar_t的。这只会使一切变得更加困难。
有关详细信息,请转到 gcc.gnu.org/ml/gcc-help
:
答案 1 :(得分:0)
确实有支持。这段代码在g ++ 4.8上编译得很好(正如它应该在任何符合标准的编译器上):
#include <iostream>
#include <string>
int main(){
std::wstring s(L"Hello World!");
std::wcout << s;
}