Итак, у меня есть этот простой код внутри метода нажатия кнопки:
std::stringstream ss;
unsigned counter = 0;
while(true)
{
ss.clear();
ss << DEFAULT_USER_CONFIG_NAME << " " << ++counter;
const char* name = ss.str().c_str();
MessageBox(name);
/* ... while break condition */
}
Проблема в том, что окно сообщения пусто. Но он работает правильно, когда я передаю текст напрямую:
MessageBox(ss.str().c_str()); // that shows text just fine
Что я обнаружил с помощью отладчика, так это то, что локальная переменная «имя» не создается (по крайней мере, она не отображается в отладчике). Любая подсказка, почему он работает, когда передается напрямую, а в противном случае - нет? Также, когда я передал «имя» CString, оно вернуло true при проверке IsEmpty().
ss.str()
уничтожается до вызоваMessageBox(name)
. У вас есть какие-либо вопросы? - person LogicStuff   schedule 12.09.2016