Próbuję użyć std :: ostringstream, aby przekonwertować liczbę na ciąg znaków (char *), ale wydaje się, że nie działa. Oto kod, który mam:std :: ostringstream nie zwraca poprawnego ciągu znaków
#include <windows.h>
#include <sstream>
int main()
{
std::ostringstream out;
out << 1234;
const char *intString = out.str().c_str();
MessageBox(NULL, intString, intString, MB_OK|MB_ICONEXCLAMATION);
return 0;
}
W wynikowym oknie komunikatu po prostu nie ma tekstu.
To prowadzi mnie do przekonania, że wywołanie out.str().c_str()
zwraca nieprawidłowy ciąg, ale nie jestem pewien. Skoro zmniejszyłem ten program do tej pory, wciąż mam problem, musiałem popełnić żenująco prosty błąd. Pomoc jest doceniana!
+1 za jasny, zwięzły pytanie, które zawiera SSCCE. Dostaję prawidłowy tekst w Windows 7 z GCC 4.7.1. – chris
@chris: Niezdefiniowane zachowanie jest niezdefiniowane. ; -] – ildjarn
@ildjarn, Ah, dobry połów. – chris