Размер std::string
равен , а не неизвестен - вы можете получить его, используя функцию-член std::string::size()
. Также обратите внимание, что в отличие от C-строк, класс std::string
не обязательно должен заканчиваться нулем, поэтому вы не можете полагаться на нулевой символ для завершения цикла.
На самом деле, работать с std::string
гораздо приятнее, потому что вы всегда знаете размер. Как и все контейнеры C ++, std::string
также поставляется со встроенными итераторами, которые позволяют безопасно проходить по каждому символу в строке. Функция-член std::string::begin()
дает вам итератор, указывающий на начало строки, а функция std::string::end()
дает вам итератор, указывающий на один после последнего символа.
Я бы рекомендовал освоиться с итераторами C ++. Типичный цикл с использованием итераторов для обработки строки может выглядеть следующим образом:
for (std::string::iterator it = word.begin(); it != word.end(); ++it)
{
// Do something with the current character by dereferencing the iterator
//
*it = std::toupper(*it); // change each character to uppercase, for example
}