C ++ строка и массивы

0

Если строка - это всего лишь массив символов, то считается ли это неправильным кодированием прямой доступ к индексу строки? например...

 string test = "Hello"; 
 cout << text.[0];

 int lenOfTest = (int)test.length();
 for(int i = 0; i < lenOfTest; i++ ){
   cout << test[i];
 }
  • 1
    Это нормально, кроме text.[0] Я думаю, это какая-то опечатка
  • 1
    std::string - это не просто массив символов. Это стандартный класс, который перегружает [] для доступа к элементам строки.
Теги:
string
arrays

2 ответа

3
Лучший ответ

std::string не является простым массивом char, хотя это контейнер char, и да, вы можете нормально обращаться к каждому из его элементов. Просто не используйте точку перед открытием [ как вы делали в своей второй строке.

  • 0
    std::string действительно оборачивает массив char , к которому у вас есть полный доступ.
  • 0
    @ MattMcNabb, можно было бы надеяться, что у вас нет полного доступа к базовому буферу. Если вы посмотрите на libc ++, например, есть два буфера, только один из которых на самом деле используется для данного экземпляра - я надеюсь, что пользователи не смогут полностью и напрямую разобраться
Показать ещё 2 комментария
2

Я не думаю, что плохой практикой является доступ к элементу char с помощью оператора [], однако имейте в виду, что доступ к подобному символу не приведет к возникновению исключения в случае использования позиции invalide. Чтобы создать исключение, используйте string::at.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню