porting std::wstring to gcc cygwin
porting std::wstring to gcc cygwin
我正在尝试将Visual Studio 2010编写的项目从Microsoft编译器移植到gcc Cygwin。我的问题是 gcc Cygwin 或 gcc 是否支持 std::wstring ?有解决方法吗?
是的。 它支持,但不容易。
为了支持 wstring,您的平台需要支持一大堆 wchar_t功能。 q.v. 标准 C++ IOStreams 和 locales by 兰格和克雷夫特。
仅仅说"嘿,我们有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
:
它确实有支持。这段代码在 g++ 4.8 上编译得很好(在任何符合标准的编译器上都应该如此):
#include <iostream>
#include <string>
int main(){
std::wstring s(L"Hello World!");
std::wcout << s;
}
- 如何配置Visual Studio Code以使用cygwin,cmake和gcc进行调试
- Cygwin下的gcc 9.3.0预处理器:cmdline -Dname,但名称似乎未定义
- 调用C#中的Cygwin GCC DLL挂在malloc上
- 如何在Cygwin上获得gcc来定义_WIN32
- 在cygwin(windows)和gcc/g++mac中的udp客户端服务器
- cygwin上的gcc -MM:有时是Unix风格的路径
- 对于使用Cygwin GCC编译的C++程序,是否有免费的内存调试器
- C++链接失败-ld:找不到[makefile][gcc/cygwin]
- porting std::wstring to gcc cygwin
- 在Windows 7上使用Cygwin为GCC构建提升 - 引导错误
- GCC with Cygwin/Win7: missing syscall.h
- x86_64-pc-cygwin-gcc 链接器错误
- Cygwin gcc c++ c99 库错误 stod 无法识别使用的 strtod
- Cygwin gcc编译器使用GAlib的模板实例化问题
- rand_r不在作用域中,gcc-mingw在windows上的cygwin下
- 如何在cygwin中配置gcc
- 使用Cygwin + gcc编译Boost示例项目
- cygwin上的gcc 4.7.3支持c++ 11并发特性吗?
- 为什么Windows gcc (cygwin)不写ELF头
- 从VS2012到gcc(cygwin)时"Expected primary-expression"编译错误