C ++

Как использовать строковый литерал C ++

Как использовать строковый литерал C ++
На клавиатуре компьютера напечатаны символы. Когда вы нажимаете клавишу, вы видите символ на экране. Примечание: пробел также является символом. Строковый литерал - это последовательность символов. В этой статье объясняется, как использовать строковые литералы C ++. Вы должны знать о массивах и указателях C ++, чтобы понять эту статью.

Символьный литерал

Символьный литерал - это символ в одинарных кавычках. Так,

char identity1 = 'А'; char identity2 = 'б'; символ identity3 = '4'; char идентификатор4 = '6';

все разные определения персонажей. Обратите внимание, что цифра в одинарных кавычках - это символ, а не целое число.

Управляющая последовательность, такая как \ ”(см. Ниже) в одинарных кавычках, является символом. Так,

char identity1 = '"';

это персонаж.

Одиночный символ в двойных кавычках не является символом; это строка из одного символа. Таким образом, «A», «c» или «2» не являются символом, а представляют собой строку из одного символа каждый.

Переменную char можно переназначить позже в программе следующим образом:

символ идентификатора = 'х';
идент = 'Y';

Чтобы предотвратить изменение символа, присвоенного идентификатору, позже в программе, перед определением укажите зарезервированное слово const следующим образом:

const char identity = 'd';

Говорят, что переменная identity предназначена только для чтения.

Строковый литерал

Строковый литерал - это последовательность символов в двойных кавычках. Так,

char identity1 [] = "Я люблю тебя"; char identity2 [] = "Я ненавижу троих из вас"; char identity3 []
= "мы - мир"; char identity4 [] = "Привет, мир!!";

все разные определения строковых литералов. Обратите внимание на использование двойных кавычек. Нет ничего лучше обычной переменной для строки. Строковый литерал - это массив символов, в котором вместо разделения с помощью последовательность разделяется знаком «». Символы не разделяются запятыми. В квадратные скобки можно поместить любое число, превышающее количество символов в строковом литерале. Однако квадратные скобки лучше оставить пустыми.

Одиночный символ в двойных кавычках не является символом; это строка из одного символа. Таким образом, «A», «c» или «2» - это не символ, а строка из одного символа каждый.

Строковая переменная не позволяет переназначать полный литерал позже в программе - см. Ниже. Однако отдельные символы могут быть переназначены - см. Ниже.

Одиночные и двойные кавычки в символах или буквах

Чтобы использовать одинарную кавычку в качестве символа, сделайте что-нибудь вроде,

символ идентификатора = '\' ';

Чтобы использовать двойные кавычки в качестве символа в строковом литерале, сделайте что-нибудь вроде,

char identity [] = "ab" cd ";

Обратная косая черта используется в escape-последовательности, чтобы избежать конфликта с разделителями. Чтобы использовать двойные кавычки в качестве символа, не нужно использовать обратную косую черту: '”' можно. Чтобы использовать одинарную кавычку в строковом литерале, не нужно использовать обратную косую черту: «ab'cd» можно.

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

Последовательность побега

Управляющая последовательность может быть одной из следующих:

\ '"\? \\ \ a \ b \ f \ n \ r> \ t \ v

Каждая escape-последовательность обычно вводится либо как символ в одинарных кавычках, либо как escape-последовательность в двойных кавычках.

Операции с персонажами

Конкатенация

По определению два строковых литерала можно соединить пробелом следующим образом:

char identity [] = "abc" "def";
cout << ident << "\n";

Вывод: abcdef . Это определение можно расширить до более чем двух литералов. Примечание: утверждение - это определение, а не просто присвоение. Определение может даже продолжаться до следующей строки с пробелом, разделяющим строки следующим образом:

char identity [] = "abc" "def"
«ги»;
cout << ident << "\n";

Результат: abcdefghi.

Примечание: символы не могут быть объединены таким образом, поскольку одинарные кавычки для символа не могут содержать более одного символа.

Операторы равенства

Одинаковые символы в одном регистре равны. Они не равны, если не принадлежат к одному и тому же корпусу. Рассмотреть возможность,

bool result = 'B' == 'B';
cout << result << "\n";

== означает равно, а = означает назначенный, а не равно. Выход 1 для истины. Рассмотреть возможность,

bool result = 'B' == 'b';
cout << result << "\n";

На выходе 0 для false. Рассмотреть возможность,

bool result = 'b' == 'c';
cout << result << "\n";

На выходе 0 для false. Рассмотреть возможность,

bool result = 'B' != 'B';
cout << result << "\n";

!= означает "не равно", а "=" означает "назначено" и "не равно". На выходе 0 для false. Рассмотреть возможность,

bool result = 'B' != 'b';
cout << result << "\n";

Выход 1 для истины. Рассмотреть возможность,

bool result = 'b' != 'c';
cout << result << "\n";

Выход 1 для истины.

Итак, == и != - операторы равенства.

Операторы отношения

Для обычных символов в C ++ в возрастающем порядке цифры идут перед прописными буквами, а перед строчными.

Так < will return true (1) when the left character is less than the right character. The other relational operators, <=, >, > = объясняются аналогично.

Строковый литерал как объект

Массив - это постоянный указатель на начало определенной последовательности типов данных. Точно так же строка является постоянным указателем на начало последовательности символов. Сравните следующие определения:

int arr [] = 3, 4, 5, 6, 7;
char str [] = 'ш', 'о', 'м', 'а', 'н';
char stri [] = "женщина";

Первый массив представляет собой массив целых чисел и состоит из пяти элементов. Второй и третий массивы - это массивы символов с разными именами, но с одинаковым количеством элементов. Второй и третий массивы одинаковы, но для их имен. Текстовое содержимое второго массива ограничивается фигурными скобками; символы разделены запятыми, и каждый символ находится в одинарных кавычках. Текстовое содержимое третьего массива ограничивается двойными кавычками; символы не разделяются запятыми, и каждый символ не в одинарных кавычках. Второй и третий массивы - это два способа создания строки, третий - лучший.

arr - это постоянный указатель на первый элемент своего массива, то есть arr всегда будет указывать на местоположение, имеющее целое число, 3, даже если значение 3 изменилось. Размер массива, пять элементов, на самом деле не остается постоянным. Однако каждое из значений массива можно изменить.

str - это постоянный указатель на первый элемент своего массива, что означает, что str всегда будет указывать на место, имеющее символ 'w', даже если значение 'w' изменится. Размер символьного массива, пять элементов, на самом деле не остается постоянным. Однако каждое из значений литерала можно изменить.

stri - это постоянный указатель на первый элемент его литерала (массива), то есть stri всегда будет указывать на место с символом w, даже если значение w изменится. Размер строкового литерала (массива), пять элементов, на самом деле не остается постоянным. Однако каждое из значений литерала можно изменить.

Что является константой в массиве или строковом литерале? Адрес памяти первого элемента массива или литерала остается как значение имени (идентификатора) массива или литерала и не может быть изменен. Ну, размер массива или литерала на самом деле не остается постоянным. Каждое значение в массиве или литерале можно изменить. Следующий код показывает, как был изменен четвертый элемент каждого из массивов:

int arr [] = 3, 4, 5, 6, 7;
char str [] = 'ш', 'о', 'м', 'а', 'н';
char stri [] = "женщина";
arr [3] = 9;
str [3] = 'е';
stri [3] = 'е';
cout << arr[3] << '\n';
cout << str << '\n';
cout << stri << '\n';

Результат:

9
женщины женщины
женщины

Обратите внимание, что к элементам определенного строкового литерала, как и для третьего определения выше, можно получить доступ с помощью индекса массива (нижнего индекса). Причина второй строки вывода приведена ниже.

Подстрочный индекс определения

Обратите внимание, что в приведенных выше определениях нет целого числа для нижнего индекса. Когда количество элементов не может быть легко определено программистом, целое число для нижнего индекса следует опустить. В любом случае целое число не должно быть меньше количества элементов в массиве.

Для строкового литерала целое число должно быть как минимум на 1 больше, чем количество символов в строке. Это связано с тем, что нулевой символ (\ 0) всегда добавляется компилятором в конец массива, который представляет собой строку, разделенную двойными кавычками. Нулевой символ не добавляется в конец второго массива выше, потому что это не официальная строка. Третий массив - официальная строка. В следующем коде показаны минимальные значения индекса.

int arr [5] = 3, 4, 5, 6, 7;
char str [5] = 'ш', 'о', 'м', 'а', 'н';
char stri [6] = "женщина";

Чтобы второе определение стало официальной строкой, необходимо добавить нулевой символ следующим образом:

int arr [5] = 3, 4, 5, 6, 7;
char str [6] = 'ш', 'о', 'м', 'а', 'п', '\ 0';
char stri [6] = "женщина";

Теперь результат должен быть,

9
женщины
женщины

без вторых «женщин». Обратите внимание, что соответствующий индекс для второго массива - 6, а не 5, как было.

Постоянные буквальные значения

Чтобы предотвратить изменение любого символа в двойных кавычках, присвоенных идентификатору, позже в программе, перед определением укажите зарезервированное слово const следующим образом:

const char identity [] = "Я люблю тебя";

Операции со строковыми литералами

Операции по обеспечению равенства

Операторы равенства: == и !знак равно . При сравнении переменных (идентификаторов) двух строк сравниваются указатели (адреса) литералов; это не правильно. Для сравнения строк необходимо сравнить литералы, как в следующем коде:

bool result = "женщина" == "женщина";
cout << result << '\n';

Выход 1 для истины. Сравнение выполняется в словарной манере, но числа идут первыми в порядке возрастания, перед прописными буквами, которые идут перед строчными буквами. Результатом следующего кода является 0, если ложь.

bool result = "женщина" != "женщина";
cout << result << '\n';

Операторы отношения со строковыми литералами

Операторы отношения не работают со строковыми литералами.

Необработанный строковый литерал

Необработанный строковый литерал позволяет отображать строку как напечатанную, игнорируя escape-последовательности и соблюдая новые строки. Рассмотрим следующий код:

char str [] = R "(abc \\ d efg hij
klmn \ n "'opq
первая) ";
cout << str << '\n';

Результат:

abc \\ d efg hij
klmn \ n "'opq
первый

В коде необработанный строковый литерал начинается с R, за которым следуют ”и ( . Он заканчивается на) и «.

Типы основных строковых литералов C ++

символ

Тип char является исходным типом C ++ и обычно хранит символ в 8 битах.

char16_t

Это хранит символ в 16 битах.

char32_t

Это хранит символ в 32-битном формате.

wchar_t

char16_t и char32_t - широкие символы. wchar_t - это расширенный символ, который является проприетарным и определяется реализацией.

Заключение

Символьный литерал - это одиночный символ в одинарных кавычках. Управляющая последовательность - это символ, который также может быть в одинарных кавычках. Строковый литерал - это последовательность символов в двойных кавычках. Строковый литерал - это массив символов, заканчивающихся на \ 0. Операторы равенства и отношения работают с символьными литералами. Операторы равенства работают со строковыми литералами, но реляционные операторы не работают со строковыми литералами. Идентификаторы символов могут использоваться в сравнениях, но строковые идентификаторы не должны использоваться в сравнениях. Необработанный строковый литерал позволяет отображать строку как напечатанную, игнорируя escape-последовательности и соблюдая новые строки.

Chrys

Как увеличить FPS в Linux?
FPS означает Кадров в секунду. Задача FPS - измерить частоту кадров при воспроизведении видео или во время игры. Проще говоря, количество непрерывных ...
Лучшие игры Oculus App Lab
Если вы владелец гарнитуры Oculus, вы должны знать о загрузке неопубликованных приложений. Боковая загрузка - это процесс установки на гарнитуру содер...
10 лучших игр для Ubuntu
Платформа Windows была одной из доминирующих платформ для игр из-за огромного процента игр, которые разрабатываются сегодня с встроенной поддержкой Wi...