将整数值转换为 ASCII 字符

Converting integer value to ASCII char

我正在尝试使用整数值作为其对应的 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::UInt16System::Int16 的类型,尽管它们的大小相同。

在C++中,charunsigned 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