Я надеялся, что я получу еще одно объяснение. Мне сказали, что мне нужно явно добавить \0
в конец строки. По-видимому, это для строкового класса C++ и что на самом деле это массив символов, который, по-видимому, анализируется под капотом. Мне сказали, что мы должны использовать \ 0 для того, чтобы сказать, где конец строки, как показано ниже:Почему строка C++ нуждается в 0?
int main()
{
char str[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
cout << str << endl;
return 0;
}
Однако, если у меня есть пользовательский ввод их имя, например, я не что C++ автоматически использует \ 0 для завершения строки. Поэтому аргумент, что \ 0 должен быть там, чтобы знать, где заканчивается строка, не имеет смысла. Почему мы не используем функцию .length() для учета длины строки?
Я написал следующую программу, чтобы проиллюстрировать, что длина ввода может быть найдена из функции .length().
int main()
{
string firstName;
cout << "Enter your first name: ";
cin >> firstName;
cout << "First Name = " << firstName << endl;
cout << "String Length = " << firstName.length() << endl;
return 0;
}
Итак, если пользователь вводит имя «Том». Тогда результат будет следующий:
First Name = Tom
String Length = 3
Я обратил на это внимание моего профессора, а также эта статья http://www.cplusplus.com/reference/string/string/length/ , и мне сказали, что именно поэтому я в колледже, потому что это не может быть сделано таким образом. Может ли кто-нибудь предложить какое-либо понимание, так как я не понимаю, чего не хватает?
Вы вводите в заблуждение 'char []' и 'quoted строковые литералы" и класс 'string' willy-nilly здесь. Просьба уточнить ваш фактический вопрос. Цель цикла полностью ускользает от меня, а также то, что означает ваш вывод. – EJP
Вы путаете std :: string со строками C. 'Почему мы не используем функцию .length() для учета длины строки.' Как вы думаете, std :: string: length знает длину строки? – Falmarri