Visual C++ vector<char> 将数值放入列表框中

Visual C++ vector<char> puts numeric values in listbox

我是一个 C/Java/VBA 的 C++ 新手...在按下表格。

当我尝试做看起来很自然的事情(下面的代码)时,列表框会填充以 10 为基数的 ASCII 值而不是字符。我一直在寻找 "force" listbox.Items.Add() 的方法来将其作为一个角色,但我没有任何运气。有人可以告诉我我做错了什么吗?

    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
       std::vector<char> CDROMDrives{ 'A', 'B', 'C'};
       int i = 0;
       for (auto &c : CDROMDrives) {
           listBox1->Items->Add(c);
           i++;
       }
   }

Here's what the list box looks like currently

65、66、67分别是'A'、'B'、'C'的ASCII数值。您需要确保您的程序将这些值解释为 chars 而不是 ints。在插入列表之前尝试将循环条件更改为 for (char &c : CDROMDrives) 或转换为 char

关于语言的标准说明:C++/CLI 旨在作为允许 C# 或其他 .Net 代码调用 C++ 代码的桥梁。它不打算作为主要的开发语言。如果你想学习 C++,我会使用 C++ 和 MFC 作为你的 GUI 工具包。如果您想学习托管代码,我会通过 WinForms 或 WPF 学习 C#。如果您有 Java/VBA 经验,我会选择 C#。

也就是说:

您没有说明您使用的是什么 GUI 工具包,或者 listBox1 的类型是什么,但它肯定是某种托管类型。因此,您需要制作一个 .Net System::String 以插入到列表框中。 C++ char 将被解释为 8 位整数,而 C++ std::string 将不会被解释为您想要的。

要转​​换为字符串,请将其转换为正确的 managed type, and then call the ToString 方法。

listBox1->Items->Add(((System::Char)c).ToString());