0

我只想在 C++ 中向我的 listBox 添加一个 wostringstream (tmp) 项。这是我尝试的方式:

 for(int i=0; i<6; i++){
    tmp<<hex<<m_device_info.Adress.rgBytes[i];
    if (i<5)
     tmp<<L":";
 }
listBox2->Items->Add(tmp.str());


我得到的错误是:

“错误 C2664:'System::Windows::Forms::ListBox::ObjectCollection::Add' 在 'system::object ^' 中转换 'wchar_t' 是不可能的”

有人有线索吗?

4

1 回答 1

0
listBox2->Items->Add(System::Runtime::InteropServices::
    Marshal::PtrToStringUni(IntPtr(tmp.str().c_str())));

在 .NET 应用程序中使用托管 System::String 类比使用非托管字符串和流更好。如果这不是绝对必要的,请不要混合托管和非托管类型。

这是我的测试项目中的代码:

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
             std::wostringstream s;
             s << L"test";

             listBox1->Items->Add( System::Runtime::InteropServices::
                 Marshal::PtrToStringUni( IntPtr( (void*)s.str().c_str() ) ) );

         }
于 2012-12-08T15:55:46.423 回答