Я просто хочу добавить элемент wostringstream (tmp) в мой список в C ++. Вот как я пытался:
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: ‘Система :: Windows :: Forms :: ListBox :: ObjectCollection :: Add’
конвертировать ‘wchar_t’ в ‘system :: object ^’ невозможно «
У кого-нибудь есть подсказка?
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() ) ) );
}
Других решений пока нет …