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' convert'wchar_t' in'system :: object ^'notpossible"

誰かが手がかりを持っていますか?

4

1 に答える 1

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

アンマネージ文字列とストリームよりも、マネージ System::String クラスを .NET アプリケーションで使用することをお勧めします。絶対に必要でない場合は、マネージド型とアンマネージド型を混在させないでください。

これは私のテスト プロジェクトのコードです。

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 に答える