C++高性能并行编程与优化 - 课件 - 15 C++ 系列课:字符与字符串C++ 的 vector 采用了 [ptr, ptr + len, ptr + capacity] 构型。 vector 没有采用小字符串优化…这是因为 string 面对的都 是 char , wchar_t 这种比较小的类型,且用户常用的字符 串往往比较短很容易放进 15 字节的局部栈空间里;然而 vector 面对的往往是比较大的数据结构,有时还有智能指 针, std::thread 这种具有非平凡构造 表示这么宽的字符?有很多种解决方案。 • 一种方案是:索性放弃 char ,改用 wchar_t 做字符类型 。 • wchar_t 在 Linux 上为 4 字节,完全足够表示 Unicode 这 0x000000~0x10FFFF 的范围,甚至还有 1 字节浪费 。 wchar_t 的普及 • 所以他们提议:以后用 const wchar_t * 代替 const char * 。 • 或者继续用 组。并且现在 ‘ \0’ 也不能用作结束符了,因为 wchar_t 的最高位始终 0 (因为 Unicode 只有 3 字节, wchar_t 的 4 字节有一个字节总是为 0 的),这会导致现有的 C 语言函数用不了,例如 strlen(s) 现在总是会返回 3 了。 • 因此 C 语言为了适应这个变化,推出了专门针对 wchar_t 的 wcslen 、 wcscpy 、 wmemset0 码力 | 162 页 | 40.20 MB | 1 年前3
Making Libraries Consumable for Non-C++ Developersng_view const dev); The types char and wchar_t do not indicate encoding. The size of wchar_t: • Windows, sizeof(wchar_t) == 2 • Non-Windows, sizeof(wchar_t) == 4 std::basic_stringhas memory 0 码力 | 29 页 | 1.21 MB | 6 月前3
共 2 条
- 1













