C ++

Як користуватися C ++ String Literal

Як користуватися C ++ String Literal
На клавіатурі комп’ютера надруковані символи. При натисканні клавіші на екрані з’являється символ. Примітка: пробіл - це також символ. Рядковий літерал - це послідовність символів. У цій статті пояснюється, як використовувати рядкові літерали C ++. Ви повинні знати про масиви та вказівники на C ++, щоб зрозуміти цю статтю.

Символ буквальний

Буквальний символ - це символ в одинарних лапках. Так,

char ident1 = 'A'; char ident2 = 'b'; char ident3 = '4'; char ident4 = '6';

всі різні визначення символів. Зверніть увагу, що цифра в одинарних лапках є символом, а не цілим числом.

Екранна послідовність, наприклад \ ”(див. Нижче) в одинарних лапках, є символом. Так,

char ident1 = '"';

є персонажем.

Окремий символ у подвійних лапках не є символом; це рядок з одного символу. Отже, "A", "c" або "2" не є символом, а є рядком по одному символу.

Змінна char може бути перепризначена пізніше в програмі наступним чином:

char ident = 'x';
ident = 'Y';

Щоб зупинити зміну символу, присвоєного ідентифікатору, пізніше в програмі, перед визначенням додайте зарезервоване слово const наступним чином:

const char ident = 'd';

Змінна ident називається лише для читання.

Рядок буквальний

Рядовий літерал - це послідовність символів у подвійних лапках. Так,

char ident1 [] = "Я тебе люблю"; char ident2 [] = "Я ненавиджу 3 з вас"; char ident3 []
= "ми - світ"; char ident4 [] = "Привіт Світ!";

всі різні визначення рядкових літералів. Зверніть увагу на використання подвійних лапок. Для рядка немає нічого подібного до звичайної змінної. Рядковий літерал - це масив символів, де замість розмежування за допомогою послідовність розмежовується знаком “”. Символи не відокремлюються комами. Будь-яке число, що перевищує кількість символів у рядковому літералі, може бути розміщено в квадратних дужках. Однак краще залишити квадратні дужки порожніми.

Окремий символ у подвійних лапках не є символом; це рядок з одного символу. Отже, "A", "c" або "2" - це не символ, а рядок по одному символу.

Рядова змінна не дозволяє повторно призначати повний літерал, пізніше в програмі - див. Нижче. Однак окремі символи можуть бути перепризначені - див. Нижче.

Одинарна та подвійна лапка символом або буквалом

Щоб мати єдину цитату як персонажа, зробіть щось на зразок,

char ident = '\' ';

Щоб мати подвійну лапку як символ у рядковому літералі, зробіть щось на зразок,

char ident [] = "ab" cd ";

Зворотна коса риса використовується в послідовності виходу, щоб уникнути конфлікту з роздільниками. Щоб мати подвійну лапку як символ, немає необхідності в зворотній косою рисі: '' '- це добре. Щоб мати єдину лапку в рядковому літералі, немає необхідності в зворотій косою рисі: "ab'cd" - це нормально.

Оскільки зворотна коса риса використовується для того, щоб уникнути символу, вона повинна бути екранована з іншою зворотною рисою, коли використовується як символ або в рядковому літералі.

Послідовність втечі

Евакуаційна послідовність є однією з:

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

Кожна послідовність входів зазвичай вводиться як символ в одинарних лапках, або як послідовність входів у подвійних лапках.

Операції з символами

Об’єднання

За визначенням, два рядкові літерали можна об’єднати з пробілом наступним чином:

char ident [] = "abc" "def";
кут << ident << "\n";

Результат: abcdef . Це визначення можна розширити до більш ніж двох літералів. Примітка: твердження є визначенням, а не просто призначенням. Визначення може навіть перейти до наступного рядка з пробілом, що розділяє рядки таким чином:

char ident [] = "abc" "def"
«гі»;
кут << ident << "\n";

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

Примітка: Символи не можна об'єднати таким чином, оскільки одинарні лапки для символу не можуть мати більше одного символу.

Оператори рівності

Однакові символи в одному і тому ж випадку рівні. Вони не рівні, якщо вони не однакові. Поміркуйте,

результат bool = 'B' == 'B';
кут << result << "\n";

== означає рівне, тоді як = означає присвоєне, а не рівне. Вихід дорівнює 1 для true. Поміркуйте,

результат bool = 'B' == 'b';
кут << result << "\n";

Результатом є 0 для false. Поміркуйте,

результат bool = 'b' == 'c';
кут << result << "\n";

Результатом є 0 для false. Поміркуйте,

результат bool = 'B' != 'B';
кут << result << "\n";

!= означає не-рівний, тоді як = означає, що призначений і не є рівним. Результатом є 0 для false. Поміркуйте,

результат bool = 'B' != 'b';
кут << result << "\n";

Вихід дорівнює 1 для true. Поміркуйте,

результат bool = 'b' != 'c';
кут << result << "\n";

Вихід дорівнює 1 для true.

Отже, == та != є операторами рівності.

Реляційні оператори

Для звичайних символів на 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 [] = 'w', 'o', 'm', 'a', 'n';
char stri [] = "жінка";

Перший масив - це масив ints і містить п’ять елементів. Другий і третій масиви - це масиви символів із різними назвами, але однаковою кількістю елементів. Другий і третій масиви однакові, але для своїх назв. Текстовий вміст другого масиву розмежовується фігурними дужками; символи розділяються комами, і кожен символ подається в одинарних лапках. Текстовий вміст третього масиву розмежовано подвійними лапками; символи не розділяються комами, і кожен символ не міститься в одинарних лапках. Другий і третій масиви - це два способи створення рядка, причому третій спосіб є кращим.

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

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

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

Що є константою в масиві або рядковому літералі? Адреса пам'яті першого елемента масиву або літералу залишається як значення імені (ідентифікатора) масиву або літералу і не може бути змінена. Ну, розмір масиву або літералу насправді не залишається постійним. Кожне значення в масиві або літералі можна змінити. Наступний код показує, як був змінений четвертий елемент кожного з масивів:

int arr [] = 3, 4, 5, 6, 7;
char str [] = 'w', 'o', 'm', 'a', 'n';
char stri [] = "жінка";
arr [3] = 9;
str [3] = 'e';
stri [3] = 'e';
кут << arr[3] << '\n';
кут << str << '\n';
кут << stri << '\n';

Результат:

9
жінки-жінки
жінки

Зверніть увагу, що до елементів визначеного рядкового літералу, як і до третього визначення вище, можна отримати доступ за допомогою індексу масиву (індексу). Причина другого рядка результату наведена нижче.

Визначення Індекс

Зверніть увагу, що у наведених вище визначеннях для індексу немає цілого числа. Коли кількість елементів не може бути легко визначена програмістом, ціле число для індексу повинно бути опущено. Як би там не було, ціле число не повинно бути меншим за кількість елементів у масиві.

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

int arr [5] = 3, 4, 5, 6, 7;
char str [5] = 'w', 'o', 'm', 'a', 'n';
char stri [6] = "жінка";

Для того, щоб зробити друге визначення офіційним рядком, слід додати нульовий символ наступним чином:

int arr [5] = 3, 4, 5, 6, 7;
char str [6] = 'w', 'o', 'm', 'a', 'n', '\ 0';
char stri [6] = "жінка";

Результат повинен бути тепер,

9
жінки
жінки

без другої "жінки". Зверніть увагу, що відповідний індекс для другого масиву - 6, а не 5, як було.

Постійні буквальні цінності

Щоб зупинити зміну будь-якого символу в подвійних лапках, призначених ідентифікатору, пізніше в програмі, перед визначенням додайте зарезервоване слово const наступним чином:

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

Операції зі струнними літералами

Операції з рівності

Операторами рівності є == та != . Коли порівнюються змінні (ідентифікатори) двох рядків, то в підсумку порівнюються покажчики (адреси) літералів; це неправильно. Для порівняння рядків слід порівнювати літерали, як у наступному коді:

результат bool = "жінка" == "жінка";
кут << result << '\n';

Вихід дорівнює 1 для true. Порівняння проводиться за словниковим способом, але цифри стоять першими у порядку зростання, перед великими літерами, які стоять перед малими літерами. Вихід наступного коду дорівнює 0 для false.

bool result = "жінка" != "жінка";
кут << result << '\n';

Реляційні оператори зі рядковими літералами

Реляційні оператори не працюють із рядковими літералами.

Сирий рядок буквальний

Сировинний літерал рядка дозволяє відображати рядок як набраний, ігноруючи вихідні послідовності та поважаючи нові рядки. Розглянемо такий код:

char str [] = R "(abc \\ d efg hij
klmn \ n "'opq
rst) ";
кут << str << '\n';

Результат:

abc \\ d efg hij
klmn \ n "'opq
перший

У коді сирий літеральний рядок починається з R, а потім ”і ( . Він закінчується на) і “.

Типи основних рядків C ++

char

Тип char - оригінальний тип C ++ і зазвичай зберігає символ у 8 бітів.

char16_t

Це зберігає символ у 16 ​​бітах.

char32_t

Це зберігає символ у 32 біти.

wchar_t

char16_t та char32_t - це широкі символи. wchar_t - це широкий символ, який є власністю та визначається реалізацією.

Висновок

Буквальний символ - це одиничний символ у одинарних лапках. Екранна послідовність - це символ, який також може бути в одинарних лапках. Рядовий літерал - це послідовність символів у подвійних лапках. Рядковий літерал - це масив символів, які закінчуються на \ 0. Оператори рівності та реляції працюють з літералами символів. Оператори рівності працюють із рядковими літералами, але реляційні оператори не працюють із рядковими літералами. Ідентифікатори символів можна використовувати для порівняння, але ідентифікатори рядків не слід використовувати для порівняння. Сировинний літеральний рядок дозволяє відображати рядок як набраний, ігноруючи вихідні послідовності та поважаючи нові рядки.

Кріс

Emulate Mouse clicks by hovering using Clickless Mouse in Windows 10
Using a mouse or keyboard in the wrong posture of excessive usage can result in a lot of health issues, including strain, carpal tunnel syndrome, and ...
Add Mouse gestures to Windows 10 using these free tools
In recent years computers and operating systems have greatly evolved. There was a time when users had to use commands to navigate through file manager...
Control & manage mouse movement between multiple monitors in Windows 10
Dual Display Mouse Manager lets you control & configure mouse movement between multiple monitors, by slowing down its movements near the border. Windo...