我尝试使用整数值来表示其对应的 ASCII 字符:
char c = char(65); //65 equivalent to A character
MessageBox::Show(System::Convert::ToString(c), "Conversion",
MessageBoxButtons::OK, MessageBoxIcon::Error);
此方法仅在消息框中显示“65”而不是字符 A。有没有办法在 C++/CLI 中显示字符而不是数字?我尝试了多种其他方法,但似乎不起作用。
最佳答案
这是一个 C++ 和 .Net 类型与您期望的方式不匹配的问题。
在 .Net 中,有一种不同的字符类型:System::Char
,或者如果您有 using namespace System;
,则只是 Char
>。 (请注意大写“C”,它很重要。)这是与 System::UInt16 或 System::Int16 不同的类型,尽管它们大小相同。
在 C++ 中,char
和 unsigned char
是最小的类型。一字节字符与一字节整数之间没有区别。
将 C++ 类型映射到 .Net 类型时,char
映射到 System::Byte
,这是一种数字类型。这就是为什么您在转换中得到包含单词“65”的字符串。
如果您想要 .Net 识别为字符而不是数字,那么您需要转换为 Char
(使用大写“C”使其成为 System::Char
)。然后您可以调用 .ToString()
来获取“A”而不是“65”。
我的测试程序:
int main(array<String^>^ args)
{
char native = (char)65;
Debug::WriteLine(native.ToString());
Char c = (Char)65;
Debug::WriteLine(c.ToString());
return 0;
}
结果:
65 A
关于c++-cli - 将整数值转换为 ASCII 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49800873/