2011-02-10 1 views
0
ostrstream m_msgStream; 
m_msgStream.seekp(0); 
m_msgStream << "Hello"; 
m_msgStream << ends; 
char *str = m_msgStream .str(); 

Мы получаем str NULL. Если мы удалим линию прокрутки, то она работает нормально. Даже тот же код отлично работает с VS 6. Anyidea, как использовать seekp в VS 2008?Неопределенное поведение Ostrstream в VS 2008

ответ

0

ostrstream устарел. Вместо этого используйте std::ostringstream.

#include <sstream> 
std::ostringstream m_msgStream; 
m_msgStream << "Hello"; 
std::string str = m_msgStream().str(); 
const char* cstr = str.c_str(); 
+0

Это в основном корень. Чтобы подвести итог, вы должны использовать 'm_msgStream.str(). C_str()', иначе вы получите std :: string, а не char *. – RedX

+0

m_msgStream(). Str(); вернуть char * только. – CrazyC

Смежные вопросы