问题标签 [char32-t]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
5780 浏览

c++ - C++0x 中的新 unicode 字符

我正在构建一个 API,它允许我获取各种编码的字符串,包括 utf8、utf16、utf32 和 wchar_t(根据操作系统可能是 utf32 或 utf16)。

  1. 新的 C++ 标准引入了新类型char16_t,并且char32_t没有这种大小的歧义,应该在将来使用,所以我也想支持它们,但问题是,它们是否会干扰正常uint16_t的 , uint32_t,wchar_t类型不允许重载,因为它们可能指的是同一类型?

    所以我可以写:

    /li>
  2. std::basic_string<char16_t>今天的typedef 是什么std::basic_string<char32_t>

    我找不到任何参考。

    编辑:根据 gcc-4.4 的标题,介绍了这些新类型:

    我只是想确保这是实际的标准要求,而不是 gcc-ism。

0 投票
3 回答
2226 浏览

c++ - C++ char16_t 的大小取决于什么?

这也与char32_t任何intXX_t. 该规范指出:

2.14.3.2

包含单个 c-char 的 char16_t 文字的值等于其 ISO 10646 代码点值,前提是该代码点可以用单个 16 位代码单元表示。

5.3.3.1

[..] 特别是 [..] sizeof(char16_t)、sizeof(char32_t) 和 sizeof(wchar_t) 是实现定义的

intXX_t除了它们是“可选”(18.4.1)的评论之外,我看不到有关这些类型的任何信息。

如果 a 不char16_t保证是 2 个字节,它是否保证是 16 位(即使在 1 字节!= 8 位的架构上)?

0 投票
1 回答
9558 浏览

c++ - 在 I/O 中使用 char16_t 和 char32_t

C++11 引入char16_tchar32_t促进使用 UTF-16 和 UTF-32 编码的文本字符串。但是该<iostream>库仍然只支持wchar_t为多字节 I/O 定义的实现。

为什么支持char16_tchar32_t不是添加到<iostream>库中以补充wchar_t支持?

0 投票
1 回答
1927 浏览

c++ - 裸 char32_t 是签名的还是未签名的?

同样,裸char16_t签名还是未签名?是否定义了实现?

0 投票
0 回答
85 浏览

c++ - C++:charX_t 类型的固定大小整数实现

我知道在 C++11 中引入了新的字符类型。但是,由于 C++11 并非在所有地方都可用,因此可能有必要向希望使用 UTF-16 和 UTF-32 的每个人介绍char16_t和介绍。char32_t我试图实现这样的类型。这是使用 g++ 和 clang++ 编译的工作实现的基本变体。为简单起见,我将 typedef 用于uint8_t,但它也适用于其他类型。

它打印的正是我所期望的:

由于它可能不是明确定义的行为,我想问:是否可以在不同的编译器上实现这种可移植的功能?我希望能够在函数uint16_tmychar16_t类型中重载。

非常感谢!

0 投票
0 回答
849 浏览

compiler-errors - Xcode 6 beta 5:将部署目标更改为 7.0 时出现“使用未声明的标识符 'char32_t'”的编译错误

我在当前项目中同时使用了 OC 和 Swift。混合代码在 Xcode 6 beta 中运行良好。目前,当我将 Xcode 6 beta 更新到 beta 5 时,我遇到了很多编译错误,其中大部分是由 Swift 语言本身的新特性引起的。我修复了所有与语法相关的错误,剩下一个编译错误是:

“Swift 在 7.0 之前的 iOS 上不可用;请将 IPHONEOS_DEPLOYMENT_TARGET 设置为 7.0 或更高版本(当前为 '4.3')”

当我将部署目标更改为 7.0 并编译项目时,出现了新的编译错误:

“使用未声明的标识符‘char32_t’”

此编译错误出现在文件 /Applications/Xcode6-Beta5.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 中。

0 投票
2 回答
2202 浏览

c++11 - 如何将 std::string 转换为 std::u32string?

是否有一种简单的 STL 方法可以将 std::string 转换为 std::u32string,即将 char 的 basic_string 转换为 char32_t?

这不是 Unicode 问题。

0 投票
2 回答
126 浏览

c - 有什么方法可以在 ANSI c 中创建大小为 32 的字符?

我知道 C++11 有一个 4 字节的 char32_t 类型,我想知道是否可以在 C 中实现类似的东西。我正在编写的程序需要所有 char 数组都是 4 字节的倍数。

0 投票
3 回答
1689 浏览

c - char16_t 和 char32_t 字节序

在 C11 中,支持可移植的宽字符类型char16_t,并char32_t分别添加了 UTF-16 和 UTF-32。

然而,在技术报告中,并没有提到这两种类型的字节序。

例如,以下代码片段在gcc-4.8.4我的 x86_64 计算机上编译时使用-std=c11

会产生

这意味着它是小端的。

char16_t但是这种行为是否依赖于平台/实现:它是否始终遵守平台的字节序,或者某些实现可能选择始终char32_t大字节序实现?

0 投票
4 回答
10482 浏览

c++ - 带有 char16_t 或 char32_t 的 Visual Studio C++ 2015 std::codecvt

这段代码在VS2013下编译OK:

现在使用 VS2015 我得到: