Преобразование ostringstream из VS6 в VS2010

У меня есть этот код, который хорошо работает под VS6, но дает ошибки в VS2010:

void CGreatString::operator>> (char * lpszDest)
{
strcpy (lpszDest, str());
rdbuf()->freeze(0);
}

Я нашел это для чего-то похожего на мою проблему, но это все равно не сработало...

Итак, насколько я понимаю, ostrstream устарел в VS2010, поэтому я попробовал это:

void CGreatString::operator>> (char * lpszDest)
{
ostringstream os;
string str = os().str();                     //Error 1 and 2
strcpy (lpszDest, str.c_str());
os.rdbuf()->freeze(0);                       //Error 3
}

Но я все еще получаю ошибки:

1 - ошибка C2064: термин не оценивает функцию, принимающую 0 аргументов

2- ошибка C2228: слева от.str должен быть класс / структура / объединение

3- ошибка C2039: "заморозить": не является членом "std::basic_stringbuf<_Elem, _Traits, _Alloc>"

Спасибо!

2 ответа

Решение

Судя по комментариям на мои вопросы, я смог это исправить. Спасибо!

void CGreatString::operator>> (char * lpszDest)
{
    ostringstream os;
    string str = os.str();
    strcpy (lpszDest, str.c_str());
}

Так что мини-уценка не работает в комментариях. Отлично, это просто решетка.

void CGreatString::operator>> (char * lpszDest)
{
    // copy lpszDest into my CGreatString
    // The code you write does nothing at all.
}
Другие вопросы по тегам