C ++ для условной строки [i]

0

Я нашел что-то подобное в google:

for(int i=0;someString[i];++i){
    //code to do
}

но я не могу понять, что означает someString [i]. Он не должен быть логическим выражением, так как компилятор знает, когда закончить цикл? Возможно, это тривиальный вопрос, но я довольно новичок в c++.

Благодарю вас в прямом эфире

  • 1
    Как объявляется someString ? Мы не сможем ответить, если вы не скажете (или не угадаете), как!
  • 0
    В соответствии со стандартом C завершение строки \0 всегда равно нулю, если используется ASCII или любой другой код. www-ee.eng.hawaii.edu/~tep/EE160/Book/chap7/...
Теги:
string
condition

2 ответа

4

Если someString - это массив, содержащий все, что может быть преобразовано в bool, то доступ к его элементам служит условием. Например, если это массив char, то все элементы bar '\0' будут оцениваться как true. Например:

#include <iostream>

int main()
{
  char someString[] = {'h', 'e', 'l', 'l', 'o', '\0'};
  std::cout << std::boolalpha;
  for (auto c : someString)
    std::cout << bool(c) << std::endl;
}

Ваша петля остановится, столкнувшись с первым элементом фальшивки.

  • 0
    спасибо, в общем, если я достигну конца строки, это условие будет ложным?
  • 0
    @horin Вы не будете вводить цикл для последнего элемента в строке (0)
Показать ещё 1 комментарий
3

Предполагая, что someString является char* или const char*, этот цикл прекращается, когда он достигает завершающего байта NUL.

Это потому, что каждый char называемый someString[i] является числом, а числа преобразуются в false тогда и только тогда, когда они равны 0. NUL равно 0.

Ещё вопросы

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