C-style строки. Часть 2
Часть раздела Основы путешествия по C++ на Coddy — урок 68 из 74.
Важно помнить, что при объявлении строки в стиле C определенного размера необходимо выделить достаточно места для символов, которые вы хотите сохранить, плюс одно дополнительное место для нулевого символа.
Например:
// Правильно: для "Hello" требуется 6 элементов
// (5 букв + '\0')
char str1[6] = "Hello";// Ошибка: Массив слишком мал!
// "Hello" требует 6 мест, но выделено только 5
char str2[5] = "Hello";
// Это может вызвать проблемы// Правильно: лишнее место — это нормально
// Более чем достаточно места (требуется 10 > 6)
char str3[10] = "Hello";// Пример, показывающий подсчет символов:
char name[5] = "John"; // Требуется 5 мест:
// J + o + h + n + '\0' = 5 символовВы можете получить доступ к отдельным символам в строке в стиле C, используя синтаксис массивов:
char str[] = "Hello";
char first = str[0]; // 'H'
char third = str[2]; // 'l'Вы также можете изменять символы в строке в стиле C, если не выходите за границы массива:
char str[] = "Hello";
str[0] = 'J';
std::cout << str; // Выводит "Jello"Однако вы не можете напрямую присвоить новую строку строке в стиле C после того, как она была объявлена. Вам нужно будет использовать такие функции, как strcpy для копирования строк, которые мы рассмотрим в следующих уроках.
Шпаргалка
При объявлении строк в стиле C выделяйте место для всех символов плюс один для нулевого терминатора '\0':
// Правильно: для "Hello" нужно 6 мест (5 букв + '\0')
char str1[6] = "Hello";
// Неправильно: массив слишком мал!
char str2[5] = "Hello"; // Это может вызвать проблемы
// Правильно: лишнее место — это нормально
char str3[10] = "Hello";Доступ к отдельным символам осуществляется с помощью синтаксиса массивов:
char str[] = "Hello";
char first = str[0]; // 'H'
char third = str[2]; // 'l'Изменение символов в пределах границ массива:
char str[] = "Hello";
str[0] = 'J';
std::cout << str; // Выводит "Jello"Примечание: вы не можете напрямую присвоить новую строку строке в стиле C после объявления. Используйте такие функции, как strcpy, для копирования строк.
Попробуйте сами
В этом уроке нет задания по программированию.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияИнкремент и декрементПостфиксный инкремент и декрементСокращенные арифметические операцииОператоры сравненияСравнение строк7Основы ввода-вывода
Оператор coutОператор cinВвод строкПовторение — До 120Повторение — Истина или ложь3Переменные. Часть 2
Объявление типовСоглашения об именованииПовторение: инициализация переменныхПриведение типов. Часть 1Приведение типов. Часть 26Принятие решений
Оператор ifКонструкция if - elseОператор switchУсловный операторПовторение: if - elseВложенный if - else9Циклы
Цикл For, часть 1Цикл WhileЦикл Do WhileBreakContinueЦикл For, часть 2Вложенные циклыБесконечные циклыИтоги — Динамический ввод12Строки
C-style строки. Часть 1C-style строки. Часть 2Операции со строкамиСтроковые функции. Часть 1Строковые функции. Часть 2