gpt4 book ai didi

c++ - 常见的 Windows 编译器上有哪些 std::locale 名称?

转载 作者:IT老高 更新时间:2023-10-28 12:42:56 24 4
gpt4 key购买 nike

标准几乎没有说明什么是有效的语言环境名称;只有传递无效的语言环境名称会导致 std::runtime_error。在 MSVC、MinGW 和 ICC 等常见 Windows 编译器上可以使用哪些语言环境名称?

最佳答案

好的,C 和 C++ 语言环境之间存在差异。

让我们开始吧:

  • MSVC C++ std::locale 和 C setlocale

    接受语言环境名称为“Language[_Country][.Codepage]”,例如“English_United States.1251”,否则会抛出异常。注意:代码页不能是 65001/UTF-8,并且应该与此语言环境的 ANSI 代码页一致(或直接省略)

  • Vista 和 7 中的 MSVC C++ std::locale 和 C setlocale 应该接受语言环境[Language][-Script][-Country] 像“en-US”使用 ISO-631 语言代码和ISO 3166 区域和脚本名称。

    我在 Windows 7 上使用 Visual Studio 对其进行了测试 - 它不起作用。

  • MinGW C++ std::locale 接受 "C"和 "POSIX"它不支持其他语言环境,实际上 gcc 仅在 GNU C 库上支持语言环境 - 基本上仅在 Linux 下。

    setlocale 是原生 Windows API 调用,所以应该支持我上面提到的所有内容。

    与其他 C++ 库一起使用时,它可能支持更广泛的语言环境比如 Apache stdcxx 或 STL Port。

  • ICC - 我没有测试它,但它取决于它使用的标准 C++ 库。为了Linux 下的示例它使用 GCC 的 libstdc++,因此它支持所有语言环境 gcc支持。我不知道它在 Windows 下使用的是什么标准 C++ 库。

如果你想拥有“编译器和平台”独立的语言环境支持(实际上更好的支持)看看 Boost.Locale

阿尔乔姆

关于c++ - 常见的 Windows 编译器上有哪些 std::locale 名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4406895/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com