Для всех стандартных типов библиотек функция-член empty()
является запросом, а не командой, т. Е. Означает "ты пустой?" не «пожалуйста, выбросьте свое содержимое».
Функция-член clear()
унаследована от ios
и используется для очистки состояния ошибки потока, например, если файловый поток имеет состояние ошибки, установленное на eofbit
(конец файла), то вызов clear()
вернет состояние ошибки на goodbit
(без ошибок).
Для очистки содержимого stringstream
, используя:
m.str("");
правильно, хотя с использованием:
m.str(std::string());
технически более эффективен, потому что вы избегаете вызова конструктора std::string
, который принимает const char*
. Но любой компилятор в наши дни должен иметь возможность генерировать один и тот же код в обоих случаях - так что я бы просто пошел с тем, что более читабельно.