将整数值转换为ASCII char

时间:2018-04-12 15:48:50

标签: c++-cli

我正在尝试将整数值用于其对应的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中显示字符而不是数字?我尝试了其他多种方法,但它们似乎没有用。

1 个答案:

答案 0 :(得分:1)

这是一个C ++和.Net类型与您期望的方式不匹配的问题。

在.Net中,字符有一个不同的类型:System::Char,如果你有Char,则只有using namespace System;。 (请注意首都" 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