Vector visualc&x2B+;向量<;char>;将数值放入列表框中 项目->添加(c); i++; } }

Vector visualc&x2B+;向量<;char>;将数值放入列表框中 项目->添加(c); i++; } },vector,char,c++-cli,ascii,Vector,Char,C++ Cli,Ascii,当我尝试执行看起来很自然的操作(下面的代码)时,列表框中会填充以10为基数的ASCII值,而不是字符。我一直在寻找“强制”listbox.Items.Add()将其作为一个字符接收的方法,但我没有任何运气。有人能告诉我我做错了什么吗 private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { std::vector<char> CDROMDrives{

当我尝试执行看起来很自然的操作(下面的代码)时,列表框中会填充以10为基数的ASCII值,而不是字符。我一直在寻找“强制”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++;
       }
   }
private:System::Void按钮1\u单击(系统::对象^sender,系统::事件参数^e){
向量CDROMDrives{'A','B','C'};
int i=0;
用于(自动&c:CDROM驱动器){
列表框1->项目->添加(c);
i++;
}
}

65、66和67是ASCII中“A”、“B”和“C”的数值。您需要确保程序将这些值解释为
char
s,而不是
int
s。尝试将循环条件更改为“char & c:cDROMDROWS”<代码>或在插入到列表之前,将其转换为char 。

关于语言的标准注释:C++ + CLI旨在作为C++ C或其他.NET代码调用C++代码的桥梁。它不是一种主要的开发语言。如果你想学习C++,我会用C++和MFC作为你的GUI工具包。如果你想学习托管代码,我会用WinForms或WPF学习C。如果你有Java/VBA的经验,我会选择C

也就是说:

您没有说您正在使用什么GUI工具包,也没有说listBox1的类型是什么,但它肯定是某种托管类型。因此,您需要创建一个.Net来插入列表框。C++<代码> char < /C> >将被解释为8位整数,C++ C++ > STD::String 不会被解释为您喜欢的。 要转换为字符串,请将其强制转换为正确的,然后调用该方法


欢迎来到堆栈溢出!我推荐您。向量有字符,因此
auto
将推断字符。那么可能是
ListBox
只接受数字类型或
String
s。在添加之前,请尝试将
字符
转换为
字符串
listBox1->Items->Add(((System::Char)c).ToString());