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

How Use C String Literal



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

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

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







charidentity1знак равно 'К'; charidentity2знак равно 'b'; charidentity3знак равно '4'; charidentity4знак равно '6';

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



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



charidentity1знак равно '' ';

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





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

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



charИдентификаторзнак равно 'Икс';
Идентификаторзнак равно 'А ТАКЖЕ';

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

const charИдентификаторзнак равно 'd';

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

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

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

charidentity1[] знак равно 'Я люблю вас'; charidentity2[] знак равно 'Я ненавижу троих из вас'; charidentity3[]
знак равно 'мы - это мир'; charidentity4[] знак равно 'Привет, мир!';

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

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

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

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

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

charИдентификаторзнак равно ' '';

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

charИдентификатор[] знак равно 'прочь'CD';

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

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

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

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

''? \ к b f п р> т v

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

  • ’: Используется как символ одинарной кавычки в одинарных кавычках.
  • : используется как символ двойной кавычки внутри литерала.
  • ? : поскольку ? является зарезервированным символом, его следует экранировать литералом.
  • \: обратная косая черта должна быть экранирована как символ или в строковом литерале, чтобы не приводить к какому-либо другому значению.
  • a: один раз подает сигнал тревоги при использовании в качестве символа или внутри строкового литерала.
  • b: приводит к возврату на экран в строковом литерале, удаляя предыдущий символ.
  • f: вызывает подачу следующей страницы на принтер при использовании в качестве символа или внутри литерала.
  • r: возвращает курсор, где должен быть напечатан следующий символ, но внутри текущей строки.
  • n: возвращает курсор в начало следующей строки или просто на следующую строку, в зависимости от операционной системы.
  • t: создает горизонтальную вкладку.
  • v: создает вертикальную вкладку.

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

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

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

charИдентификатор[] знак равно 'abc' 'def';
Стоимость<<Идентификатор<< ' п';

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

charИдентификатор[] знак равно 'abc' 'def'
'принять к сведению';
Стоимость<<Идентификатор<< ' п';

Результатом будет abcdefghi.

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

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

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

результат boolзнак равно 'B' == 'B';
Стоимость<<результат<< ' п';

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

результат boolзнак равно 'B' == 'b';
Стоимость<<результат<< ' п';

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

результат boolзнак равно 'b' == 'c';
Стоимость<<результат<< ' п';

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

результат boolзнак равно 'B' знак равно 'B';
Стоимость<<результат<< ' п';

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

результат boolзнак равно 'B' знак равно 'b';
Стоимость<<результат<< ' п';

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

результат boolзнак равно 'b' знак равно 'c';
Стоимость<<результат<< ' п';

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

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

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

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

Так= объясняются аналогично.

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

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

intобр[] знак равно {3, 4, 5, 6, 7};
charп[] знак равно {'в', 'или', 'м', 'к', 'п'};
charполоса[] знак равно 'женщина';

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

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

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

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

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

intобр[] знак равно {3, 4, 5, 6, 7};
charп[] знак равно {'в', 'или', 'м', 'к', 'п'};
charполоса[] знак равно 'женщина';

обр[3] знак равно 9;
п[3] знак равно 'А также';
полоса[3] знак равно 'А также';

Стоимость<<обр[3] << ' п';
Стоимость<<п<< ' п';
Стоимость<<полоса<< ' п';

Результат:

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

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

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

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

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

intобр[5] знак равно {3, 4, 5, 6, 7};
charп[5] знак равно {'в', 'или', 'м', 'к', 'п'};
charполоса[6] знак равно 'женщина';

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

intобр[5] знак равно {3, 4, 5, 6, 7};
charп[6] знак равно {'в', 'или', 'м', 'к', 'п', ' 0'};
charполоса[6] знак равно 'женщина';

Теперь вывод должен быть таким:

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

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

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

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

const charИдентификатор[] знак равно 'Я люблю вас';

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

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

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

результат boolзнак равно 'женщина' == 'женщина';
Стоимость<<результат<< ' п';

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

результат boolзнак равно 'женщина' знак равно 'женщина';
Стоимость<<результат<< ' п';

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

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

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

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

charп[] знак равнор'(abc\d efg he
klmn п'
'opq
первый) ';
Стоимость<< str << '
п';

Результат:

abc \ d efg он
klmn n'' opq
первый

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

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

char

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

char16_t

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

char32_t

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

wchar_t

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

Заключение

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

Chrys