c - Xcode调试窗口如何改变unicode字符串的显示格式?

标签 c xcode unicode clang lldb

我有一些 typedef 类型来保存 unicode 字符串,UTF16 定义为 uint_least16_tUTF32 是定义为 uint_least32_t(与 char(16|32)_t 的标准定义兼容)

在Xcode 的调试器中,显示UTF32 字符串as

我试过 LLDB 的格式化程序,但它们并不完全有效。

这是我的 UTF32 格式化程序的最新版本:type format add -f unicode32 -C yes UTF32

我尝试过的其他事情:

type format add -f unicode32s -C yes UTF32

type format add -f unicode32[] -C 是UTF32

type format add -f unicode32* -C yes UTF32

以及所有带 (UTF32*)(UTF32[]) 以及不带的。

我只是不确定现在还能尝试什么。

最佳答案

更新:我现在被告知 OP 想要为 C 而不是 C++ 进行编译,因此我在问题中添加了适当的语言标签。

以下答案中的类型在 C11 及更高版本中也可用,因此该答案的其余部分仍然适用。


尝试将您的 UTF16 typedef 更改为 char16_t .这对我有用。

对于 UTF32,char32_twchar_t 都可以。

请注意,从字符串字面量赋值时,字符串字面量的类型必须匹配,如下所示(此代码需要 C11/C++11 或更高版本):

int main ()
{
    const char16_t *s1 = u"s1 is char16_t";
    const char32_t *s2 = U"s2 is char32_t";
    const wchar_t *s3 = L"s3 is wchar_t";
    return 0;
}

当我在返回语句上放置一个断点并在控制台中打印这些变量时,我得到了这个:

(lldb) p s1
(const char16_t *) $0 = 0x0000000100000f44 u"s1 is char16_t"
(lldb) p s2
(const char32_t *) $1 = 0x0000000100000f58 U"s2 is char32_t"
(lldb) p s3
(const wchar_t *) $2 = 0x0000000100000f7c L"s3 is wchar_t"
(lldb) 

您还可以通过将鼠标悬停在它们上方或在“本地”窗口中查看它们。

描述了 C11/C++11 中可用的全部字符串文字 here (C) 和 here (C++)。

要回答您在评论中提出的问题,不需要头文件。这些都是内置类型。如果您的编译器反对这些,请检查您在 Xcode 项目的build设置中使用的 C/C++ 版本。

关于c - Xcode调试窗口如何改变unicode字符串的显示格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50339852/

相关文章:

html - 防止 HTML 实体转换为表情符号

c - 在队列中使用循环数组时出现内存问题

c - MPI 错误 : expected expression before ‘,’ token

c - fscanf 在第 254 行数据之后停止从文本文件读取

ios - UIButton 和 UILabel 在较小的屏幕上不可点击

python - 如何将数学符号渲染为 SVG/EPS/PDF 图像中的文本?

java - 如何在 Java 中将字符序列转换为 UTF-8?

c - 尝试使用 conio.h 的函数(特别是 textbackground)

ios - 退出前保存最后一个数组

ios - .newPassword for SecureField 选择强密码在使用 SwiftUI 和 iOS14 时不起作用