в чем разница между строковым потоком clear и str - PullRequest
6 голосов
/ 09 декабря 2008

Я просто хотел узнать, в чем разница между clear () и str ("");

Например:

stringstream ss("Stack Overflow");

ss.clear();

ss.str("");

Я хотел знать основную техническую разницу.

Ответы [ 2 ]

15 голосов
/ 09 декабря 2008

clear() очищает флаги состояния ошибки в stringstream. То есть он устанавливает состояние ошибки на goodbit (что равно нулю).

str("") устанавливает связанный строковый объект в пустую строку.

Они на самом деле делают совершенно разные вещи. Своеобразный выбор имен делает его звучащим , как будто они выполняют аналогичные задачи.

5 голосов
/ 09 декабря 2008
void clear ( iostate state = goodbit ) //clears and sets error flag passed as parameter

string str ( ) const;          //to get value from string stream
void str ( const string & s ); //to set value to string stream
...