将std :: wstring移植到gcc cygwin

时间:2015-01-28 18:42:19

标签: c++ windows gcc cygwin

我尝试将用Visual Studio 2010编写的项目从Microsoft编译器移植到gcc Cygwin。我的问题是gcc Cygwin还是gcc支持std :: wstring?有没有解决这个问题?

2 个答案:

答案 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;
}