Как очистить ostringstream

    ostringstream s;

    s << "123";
    cout << s.str().c_str() << endl;

    // how to clear ostringstream here?
    s << "456";
    cout << s.str().c_str() << endl;

Выход:

123
123456

Мне нужно:

123
456

Как я могу reset ostringstream получить желаемый результат?

Ответ 1

s.str("");
s.clear();

Для строки reset требуется первая строка, которая должна быть пустой; вторая строка требуется для очистки любых флагов ошибок, которые могут быть установлены. Если вы знаете, что флаги ошибок не установлены или вам не нужно их перезагружать, вам не нужно вызывать clear().

Обычно проще, чище и проще (прямолинейно?) просто использовать новый объект std::ostringstream вместо повторного использования существующего, если только код не используется в известной точке производительности.