Какая польза от «целей» в эти дни?

Несколько дней назад я наткнулся на небольшую ошибку, когда код выглядел примерно так:

ostringstream ss;
int anInt( 7 );

ss << anInt << "HABITS";
ss << ends;
string theWholeLot = ss.str();

Проблема заключалась в том, чтоends вставлял '\ 0' вostringstream такtheWholeLot на самом деле выглядело как"7HABITS\0" (то есть ноль в конце)

Теперь это не обнаружилось, потому чтоtheWholeLot затем использовался, чтобы взятьconst char * часть использованияstring::c_str() Это означало, что ноль был замаскирован, поскольку стал просто разделителем. Однако, когда это изменилось, чтобы использовать строки повсюду, нуль внезапно что-то означал и сравнения, такие как:

if ( theWholeLot == "7HABITS" )

потерпит неудачу Это заставило меня задуматься: предположительно, причинаends это возврат ко днямostrstream когда поток обычно не заканчивался нулем и должен был быть таким, чтобыstr() (который затем изгоняется неstring ноchar *) будет работать правильно.

Однако теперь, когда невозможно изгнатьchar * изostringstream, с помощьюends это не только излишне, но и потенциально опасно, и я собираюсь удалить их все из моего клиентского кода.

Может ли кто-нибудь увидеть очевидную причину использованияends вstd::string только среда?

Ответы на вопрос(2)

Ваш ответ на вопрос