Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π·Ρ‹ΠΊ программирования C++. ΠŸΡΡ‚ΠΎΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 32

Автор Π‘Ρ‚Π΅Π½Π»ΠΈ Π›ΠΈΠΏΠΏΠΌΠ°Π½

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌ прСобразования ΠΌΠ΅ΠΆΠ΄Ρƒ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΈ Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ, Ссли Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° int Π² выраТСниях, Π³Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция size().

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ строк

Класс string опрСдСляСт нСсколько ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² для сравнСния строк. Π­Ρ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ строки посимвольно. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ сравнСния зависит ΠΎΡ‚ рСгистра символов, символы Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΠΈ Π½ΠΈΠΆΠ½Π΅ΠΌ рСгистрС ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ равСнства (== ΠΈ !=) ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚, Ρ€Π°Π²Π½Ρ‹ ΠΈΠ»ΠΈ Π½Π΅ Ρ€Π°Π²Π½Ρ‹ Π΄Π²Π΅ строки соотвСтствСнно. Π”Π²Π΅ строки Ρ€Π°Π²Π½Ρ‹, Ссли Ρƒ Π½ΠΈΡ… одинаковая Π΄Π»ΠΈΠ½Π° ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ символы. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ сравнСния (<, >, <=, >=) ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚, мСньшС Π»ΠΈ ΠΎΠ΄Π½Π° строка Π΄Ρ€ΡƒΠ³ΠΎΠΉ, большС, мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½Π°, большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ. Π­Ρ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ‚Ρƒ ΠΆΠ΅ ΡΡ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΡŽ, ΡΡ‚Π°Ρ€ΡˆΠΈΠ½ΡΡ‚Π²ΠΎ символов Π² Π°Π»Ρ„Π°Π²ΠΈΡ‚Π½ΠΎΠΌ порядкС Π² зависимости ΠΎΡ‚ рСгистра.

1. Π•сли Π΄Π»ΠΈΠ½Π° Ρƒ Π΄Π²ΡƒΡ… строк разная ΠΈ Ссли ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ символ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΉ строки совпадаСт с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ символом Π±ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ, Ρ‚ΠΎ короткая строка мСньшС Π΄Π»ΠΈΠ½Π½ΠΎΠΉ.

2. Π•сли символы Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… позициях Π΄Π²ΡƒΡ… строк ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ, Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ сравнСния опрСдСляСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΠΌΡΡ символом.

Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки:

string str = "Hello";

string phrase = "Hello World";

string slang = "Hiya";

Богласно ΠΏΡ€Π°Π²ΠΈΠ»Ρƒ 1 строка str мСньшС строки phrase. Богласно ΠΏΡ€Π°Π²ΠΈΠ»Ρƒ 2 строка slang большС, Ρ‡Π΅ΠΌ строки str ΠΈ phrase.

ΠŸΡ€ΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ строк

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΡΡ‚ΠΎΠ»ΡŒ ΠΆΠ΅ просты Π² ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ, ΠΊΠ°ΠΊ ΠΈ встроСнныС. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ присвоСниС. Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ, ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса string Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ.

string st1(10, 'c'), st2; // st1 - сссссссссс; st2 - пустая строка

st1 = st2; // присвоСниС: Π·Π°ΠΌΠ΅Π½Π° содСрТимого st1 ΠΊΠΎΠΏΠΈΠ΅ΠΉ st2

           // Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ st1 ΠΈ st2 - пустыС строки

Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… строк

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ слоТСния Π΄Π²ΡƒΡ… строк являСтся новая строка, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰Π°Ρ содСрТимоС Π»Π΅Π²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° суммы (ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ +) ΠΊ строкам Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ новая строка, символы ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠΎΠΏΠΈΠ΅ΠΉ символов Π»Π΅Π²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°, сопровоТдаСмыС символами ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°. Боставной ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ присвоСния (ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ +=) (см. Ρ€Π°Π·Π΄Π΅Π» 1.4.1) добавляСт ΠΏΡ€Π°Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ ΠΊ строкС слСва:

string s1 = "hello, ", s2 = "world\n";

string s3 = s1 + s2; // s3 - hello, world\n

s1 += s2;            // эквивалСнтно s1 = s1 + s2

Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ строк ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ²

Как ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 2.1.2, ΠΎΠ΄ΠΈΠ½ Ρ‚ΠΈΠΏ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΌ, Π³Π΄Π΅ оТидаСтся Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ, Ссли Π΅ΡΡ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π² ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° string позволяСт ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅, Ρ‚Π°ΠΊ ΠΈ строковыС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ (см. Ρ€Π°Π·Π΄Π΅Π» 2.1.3) Π² строки. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ эти Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΌ, Π³Π΄Π΅ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‚ΡΡ строки, ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

string s1 = "hello", s2 = "world"; // Π² s1 ΠΈ s2 Π½Π΅Ρ‚ ΠΏΡƒΠ½ΠΊΡ‚ΡƒΠ°Ρ†ΠΈΠΈ

string s3 = s1 + ", " + s2 + '\n';

Когда ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ класса string ΡΠΌΠ΅ΡˆΠΈΠ²Π°ΡŽΡ‚ΡΡ со строковыми ΠΈΠ»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°ΠΌΠΈ, Ρ‚ΠΎ ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° + Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΈΠΏ string.

string s4 = s1 + ", ";           // ok: слоТСниС строки ΠΈ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°

string s5 = "hello" + ", ";      // ошибка: Π½Π΅Ρ‚ строкового ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°

string s6 = s1 + ", " + "world"; // ok: ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ + ΠΈΠΌΠ΅Π΅Ρ‚

                                 // ΡΡ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄

string s7 = "hello" + ", " + s2; // ошибка: нСльзя ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ строковыС

                                 // Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹

Π’ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… s4 ΠΈ s5 задСйствовано Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ, поэтому достаточно просто ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ s6 ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ странной, Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΠ½Π° Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹ΠΌ Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌ Π²Π²ΠΎΠ΄Π° ΠΈΠ»ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° (см. Ρ€Π°Π·Π΄Π΅Π» 1.2). Π­Ρ‚ΠΎ эквивалСнтно ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΊΠΎΠ΄Ρƒ:

string s6 = (s1 + ", ") + "world";

Π§Π°ΡΡ‚ΡŒ s1 + ", " выраТСния Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса string, ΠΎΠ½Π° составляСт Π»Π΅Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° +. Π­Ρ‚ΠΎ эквивалСнтно ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΊΠΎΠ΄Ρƒ:

string tmp = s1 + ", "; // ok: + ΠΈΠΌΠ΅Π΅Ρ‚ строковый ΠΎΠΏΠ΅Ρ€Π°Π½Π΄

s6 = tmp + "world";     // ok: + ΠΈΠΌΠ΅Π΅Ρ‚ строковый ΠΎΠΏΠ΅Ρ€Π°Π½Π΄

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, инициализация ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ s7 нСдопустима, ΠΈ это становится ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ, Ссли Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ выраТСния Π² скобки:

string s7 = ("hello" + ", ") + s2; // ошибка: нСльзя ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ строковыС

                                   // Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹

Π’Π΅ΠΏΠ΅Ρ€ΡŒ довольно просто Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ пСрвая Ρ‡Π°ΡΡ‚ΡŒ выраТСния суммируСт Π΄Π²Π° строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ нСдопустим.

По историчСским ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ ΠΈ для совмСстимости с языком Π‘ строковыС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ Π½Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ ΠΊ Ρ‚ΠΈΠΏΡƒ string стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. ΠŸΡ€ΠΈ использовании строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° string, Π½Π΅ слСдуСт Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹.

УпраТнСния Ρ€Π°Π·Π΄Π΅Π»Π° 3.2.2

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 3.2. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ‡ΠΈΡ‚Π°ΡŽΡ‰ΡƒΡŽ со стандартного устройства Π²Π²ΠΎΠ΄Π° ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ строкС Π·Π° Ρ€Π°Π·. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ слову Π·Π° Ρ€Π°Π·.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 3.3. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ символы ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ Π²Π²ΠΎΠ΄Π° класса string ΠΈ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ getline().

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 3.4. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ‡ΠΈΡ‚Π°ΡŽΡ‰ΡƒΡŽ Π΄Π²Π΅ строки ΠΈ ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‰ΡƒΡŽ, Ρ€Π°Π²Π½Ρ‹ Π»ΠΈ ΠΎΠ½ΠΈ. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° сообщаСт, которая ΠΈΠ· Π½ΠΈΡ… большС. Π—Π°Ρ‚Π΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° сообщала, одинаковая Π»ΠΈ Ρƒ строк Π΄Π»ΠΈΠ½Π°, Π° Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС β€” которая ΠΈΠ· Π½ΠΈΡ… Π΄Π»ΠΈΠ½Π½Π΅Π΅.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 3.5. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ‡ΠΈΡ‚Π°ΡŽΡ‰ΡƒΡŽ строки со стандартного устройства Π²Π²ΠΎΠ΄Π° ΠΈ ΡΡƒΠΌΠΌΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ ΠΈΡ… Π² ΠΎΠ΄Π½Ρƒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ строку. ΠžΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ строку. Π—Π°Ρ‚Π΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡΡ‚ΡŒ сосСдниС Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ строки ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ.

3.2.3. Π Π°Π±ΠΎΡ‚Π° с символами строки

Π—Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ приходится Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ символами строки. НапримСр, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, являСтся Π»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ символ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠΌ, ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ рСгистр символов Π½Π° Π½ΠΈΠΆΠ½ΠΈΠΉ, ΠΈΠ»ΠΈ ΡƒΠ·Π½Π°Ρ‚ΡŒ, присутствуСт Π»ΠΈ Π½Π΅ΠΊΠΈΠΉ символ Π² строкС, ΠΈ Ρ‚.Π΄.

Одной ΠΈΠ· частСй этих дСйствий являСтся доступ ΠΊ самим символам строки. Иногда Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ символа, Π° ΠΈΠ½ΠΎΠ³Π΄Π° лишь ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ символа, Π»ΠΈΠ±ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ выполнится Π½Π΅ΠΊΠΎΠ΅ условиС. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, это Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΉ способ ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ со случаями, ΠΊΠΎΠ³Π΄Π° Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ΡΡ Ρ€Π°Π·Π½Ρ‹Π΅ языковыС ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ срСдства.

Π”Ρ€ΡƒΠ³ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ символов являСтся выяснСниС ΠΈ (ΠΈΠ»ΠΈ) ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΡ… характСристик. Π­Ρ‚Π° Ρ‡Π°ΡΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ выполняСтся Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, описанных Π² Ρ‚Π°Π±Π». 3.3. Π”Π°Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ cctype.


Π’Π°Π±Π»ΠΈΡ†Π° 3.3. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ cctype

isalnum(с) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true, Ссли с являСтся Π±ΡƒΠΊΠ²ΠΎΠΉ ΠΈΠ»ΠΈ Ρ†ΠΈΡ„Ρ€ΠΎΠΉ isalpha(с) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true, Ссли с β€” Π±ΡƒΠΊΠ²Π° iscntrl(с) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true, Ссли с β€” ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ символ isdigit(с) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true, Ссли с β€” Ρ†ΠΈΡ„Ρ€Π° isgraph(с) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true, Ссли с β€” Π½Π΅ ΠΏΡ€ΠΎΠ±Π΅Π», Π° ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌΡ‹ΠΉ символ islower(с) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true, Ссли с β€” символ Π² Π½ΠΈΠΆΠ½Π΅ΠΌ рСгистрС isprint(с) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true, Ссли с β€” ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌΡ‹ΠΉ символ ispunct(с) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true, Ссли с β€” Π·Π½Π°ΠΊ ΠΏΡƒΠ½ΠΊΡ‚ΡƒΠ°Ρ†ΠΈΠΈ (Ρ‚.Π΅. символ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ являСтся ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌ символом, Ρ†ΠΈΡ„Ρ€ΠΎΠΉ, символом ΠΈΠ»ΠΈ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌΡ‹ΠΌ отступом) isspace(с) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true, Ссли с β€” символ отступа (Ρ‚.Π΅. ΠΏΡ€ΠΎΠ±Π΅Π», табуляция, Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ табуляция, Π²ΠΎΠ·Π²Ρ€Π°Ρ‚, новая строка ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³ΠΎΠ½ страницы) isupper(с) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true, Ссли с β€” символ Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ рСгистрС isxdigit(с) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true, Ссли с β€” ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Π°Ρ Ρ†ΠΈΡ„Ρ€Π° tolower(с) Если с β€” прописная Π±ΡƒΠΊΠ²Π°, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Π΅ эквивалСнт Π² Π½ΠΈΠΆΠ½Π΅ΠΌ рСгистрС, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ символ с Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌ toupper(с) Если с β€” строчная Π±ΡƒΠΊΠ²Π°, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Π΅ эквивалСнт Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ рСгистрС, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ символ с Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌ Π‘ΠΎΠ²Π΅Ρ‚. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ вСрсии Π‘++ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² языка Π‘

ΠšΡ€ΠΎΠΌΠ΅ срСдств, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для языка Π‘++, Π΅Π³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° содСрТит Ρ‚Π°ΠΊΠΆΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ языка Π‘. ИмСна Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² языка Π‘ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ имя.h. ВСрсии этих ΠΆΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² языка Π‘++ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ cимя, Ρ‚.Π΅. суффикс .h ΡƒΠ΄Π°Π»Π΅Π½, Π° ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ символ с, ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΠΉ, Ρ‡Ρ‚ΠΎ этот Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Π‘.