c++-cli - 将整数值转换为 ASCII 字符

标签 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 中显示字符而不是数字?我尝试了多种其他方法,但似乎不起作用。

最佳答案

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

在 .Net 中,有一种不同的字符类型:System::Char,或者如果您有 using namespace System;,则只是 Char >。 (请注意大写“C”,它很重要。)这是与 System::UInt16 或 System::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

关于c++-cli - 将整数值转换为 ASCII 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49800873/

相关文章:

c# - 分配给托管图像的非托管缓冲区的解决方案

c# - Visual Studio 2015 编译错误 : CS0570 is not supported by the language

windows - C++ Windows 窗体应用程序是否需要 .NET Framework?

C++/CLI -- 访问结构成员

.net - 无法以编程方式展开分配给 TreeView 的 TreeNode

multithreading - 使用 C++/CLI 从线程更新状态栏

C++:在混合使用 C++/CLI 和 C++ 进行编译时获取 c3859 错误代码

.net - 如何使我的托管 NuGet 包支持 C++/CLI 项目?

c# - 如何调试 MSBuild 依赖问题?

c++ - 调试混合代码应用程序中的启动问题