【问题标题】:How to display string in a listbox using C++?如何使用 C++ 在列表框中显示字符串?
【发布时间】:2011-09-17 12:18:30
【问题描述】:

我正在尝试提取 .txt 文件的内容,然后将其显示在列表框中,我的开发环境是 VC++ 2010。

listBox1,button1 是我的 Windows 窗体应用程序的元素。

这是我目前得到的:

         private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)
          {
             ifstream ss_dfs_output("C:\\Users\\...\\Sampletext.txt");
             string TempStoreToDisp;
             vector<string> VecToDisp;
             vector<string>::iterator ToDisp_ptr;
             string OutToDisp;
             while (getline(ss_dfs_output,TempStoreToDisp,'\n'))
             {
                 VecToDisp.push_back(TempStoreToDisp);
             }
             for (ToDisp_ptr=VecToDisp.begin();ToDisp_ptr!=VecToDisp.end();ToDisp_ptr++)
             {
                 OutToDisp = *ToDisp_ptr;
                 String ^sss = Convert::ToString(OutToDisp.c_str());
                 this->listBox1->Items->Insert(0,sss);
             }
           }

编译成功,但输出看起来很奇怪。似乎 sss 返回“true”,但它不应该是一个字符串吗?

【问题讨论】:

  • 为什么要混合 C++ 和 CLR?你为什么不做 C++/Win32/MFC 或 C#/Winforms 呢?
  • 我最初使用“String *sss = Convert::ToString(OutToDisp.c_str());”,但它无法通过编译器。我是新手,所以不太确定它们之间的关系。

标签: c++ visual-studio-2010 listbox


【解决方案1】:

怎么样

this->listBox1->Items->Add(gcnew String(OutToDisp.c_str())); // you can still Insert if you want

MSDN SByte* constructor reference

【讨论】:

  • 我试过这个方法,但出现以下错误:错误 C2664: 'System::Windows::Forms::ListBox::ObjectCollection::Add' : cannot convert parameter 1 from 'System: :String' 到 'System::Object ^'
  • 问题已解决。需要添加“gcnew”。希望这个帖子能帮助更多的人。 this->listBox1->Items->Add(gcnew String(OutToDisp.c_str()));
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-13
  • 1970-01-01
  • 1970-01-01
  • 2015-08-15
  • 1970-01-01
相关资源
最近更新 更多