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

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

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

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ поиска строк Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° string::size_type. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π΅ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚ΠΈΠΏΠ° int ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° для содСрТания значСния, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ этими функциями (см. Ρ€Π°Π·Π΄Π΅Π» 2.1.2).

Π‘Π°ΠΌΠΎΠΉ простой являСтся функция find(). Она ΠΈΡ‰Π΅Ρ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ мСстополоТСниС ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ индСкс ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ npos, Ссли ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ:

string name("AnnaBelle");

auto pos1 = name.find("Anna"); // pos1 == 0

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0, Ρ‚.Π΅. индСкс, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ подстрока "Anna" располоТСна Π² строкС "AnnaBelle".

Поиск (ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ со строками) Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ ΠΊ рСгистру. ΠŸΡ€ΠΈ поискС Π² строкС рСгистр ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅:

string lowercase("annabelle");

pos1 = lowercase.find("Anna"); // pos1 == npos

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ присвоит ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ pos1 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ npos, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ строка "Anna" Π½Π΅ соотвСтствуСт строкС "anna".

НСмного слоТнСй ΠΈΡΠΊΠ°Ρ‚ΡŒ соотвСтствиС Π»ΡŽΠ±ΠΎΠΌΡƒ символу Π² строкС. НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠ΅Ρ€Π²ΡƒΡŽ Ρ†ΠΈΡ„Ρ€Ρƒ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ name:

string numbers("0123456789"), name("r2d2");

// Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 1, Ρ‚.Π΅. индСкс ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ†ΠΈΡ„Ρ€Ρ‹ Π² ΠΈΠΌΠ΅Π½ΠΈ

auto pos = name.find_first_of(numbers);

ΠšΡ€ΠΎΠΌΠ΅ поиска соотвСтствия, Π²Ρ‹Π·Π²Π°Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ find_first_not_of(), ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, которая Π½Π΅ соотвСтствуСт искомому Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρƒ. НапримСр, для поиска ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ нСчислового символа Π² строкС ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

string dept("03714p3");

// Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 5 - индСкс символа 'p'

auto pos = dept.find_first_not_of(numbers);

ΠžΡ‚ΠΊΡƒΠ΄Π° Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ поиск

Ѐункциям поиска ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ исходной ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ. Π­Ρ‚ΠΎΡ‚ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ начинаСтся поиск. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ этого Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° являСтся Π½ΡƒΠ»ΡŒ. ΠžΠ±Ρ‰Π΅ΠΏΡ€ΠΈΠ½ΡΡ‚ΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ программирования являСтся использованиС этого Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° строки ΠΏΡ€ΠΈ поискС всСх мСстополоТСний искомого значСния.

string::size_type pos = 0;

// каТдая итСрация Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ число Π² ΠΈΠΌΠ΅Π½ΠΈ

while ((pos = name.find_first_of(numbers, pos))

        != string::npos) {

 cout << "found number at index: " << pos

      << " element is " << name[pos] << endl;

 ++pos; // пСрСвСсти Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ символ

}

УсловиС Ρ†ΠΈΠΊΠ»Π° while присваиваСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ pos индСкс ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΠ²ΡˆΠ΅ΠΉΡΡ Ρ†ΠΈΡ„Ρ€Ρ‹, начиная с Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ pos. Пока функция find_first_of() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ допустимый индСкс, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ отобраТаСтся, Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ pos увСличиваСтся.

Если Π½Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ pos Π² ΠΊΠΎΠ½Ρ†Π΅ этого Ρ†ΠΈΠΊΠ»Π°, ΠΎΠ½ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… итСрациях поиск начнСтся сначала ΠΈ Π½Π°ΠΉΠ΄Π΅Π½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ элСмСнт. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ npos Ρ‚Π°ΠΊ ΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΎ, Ρ†ΠΈΠΊΠ» Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ.

Поиск Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π΄ΠΎ сих ΠΏΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ поиска выполняСтся слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ (Ρ‚.Π΅. ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° ΠΊ ΠΊΠΎΠ½Ρ†Ρƒ). Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° прСдоставляСт Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ строку справа Π½Π°Π»Π΅Π²ΠΎ (Ρ‚.Π΅. ΠΎΡ‚ ΠΊΠΎΠ½Ρ†Π° ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ). Ѐункция-Ρ‡Π»Π΅Π½ rfind() ΠΈΡ‰Π΅Ρ‚ послСднюю, Ρ‚.Π΅. Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ справа, ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ искомой подстроки.

string river("Mississippi");

auto first_pos = river.find("is"); // Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 1

auto last_pos = river.rfind("is"); // Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 4

Ѐункция find() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ индСкс 1, указывая, Ρ‡Ρ‚ΠΎ подстрока "is" ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π· встрСчаСтся, начиная с ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ 1, Π° функция rfind() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ индСкс 4, указывая Π½Π°Ρ‡Π°Π»ΠΎ послСднСго мСстонахоТдСния подстроки "is".

Ѐункция find_last() Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ find_first(), Π½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ послСднСС мСстополоТСниС, Π° Π½Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠ΅.

β€’ Π€ΡƒΠ½ΠΊΡ†ΠΈΡ find_last_of() ΠΈΡ‰Π΅Ρ‚ послСдний символ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ соотвСтствуСт Π»ΡŽΠ±ΠΎΠΌΡƒ элСмСнту искомой строки.

β€’ Π€ΡƒΠ½ΠΊΡ†ΠΈΡ find_last_not_of() ΠΈΡ‰Π΅Ρ‚ послСдний символ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ соотвСтствуСт Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΌΡƒ элСмСнту искомой строки.

КаТдая ΠΈΠ· этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π½Π°Ρ‡Π°Π»Π° поиска.

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

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 9.47. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π² строкС "ab2c3d7R4E6" ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ†ΠΈΡ„Ρ€Ρƒ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π±ΡƒΠΊΠ²Ρƒ. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π΄Π²Π΅ вСрсии ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹: с использованиСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ find_first_of() ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ find_first_not_of().

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 9.48. Π‘ ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ опрСдСлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… name = "r2d2" ΠΈ numbers = "0123456789", Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ numbers.find(name)?

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 9.49. Π£ символов ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ надстрочная Ρ‡Π°ΡΡ‚ΡŒ, располоТСнная Π²Ρ‹ΡˆΠ΅ сСрСдины строки, ΠΊΠ°ΠΊ Ρƒ d ΠΈΠ»ΠΈ f, ΠΈΠ»ΠΈ подстрочная, Π½ΠΈΠΆΠ΅ сСрСдины строки, ΠΊΠ°ΠΊ Ρƒ p ΠΈΠ»ΠΈ g. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ содСрТащий слова Ρ„Π°ΠΉΠ» ΠΈ сообщаСт самоС Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ слово, Π½Π΅ содСрТащСС Π½ΠΈ надстрочных, Π½ΠΈ подстрочных элСмСнтов.

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

ΠšΡ€ΠΎΠΌΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² сравнСния (см. Ρ€Π°Π·Π΄Π΅Π» 3.2.2), Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° string прСдоставляСт Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ сравнСния, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ strcmp() Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π‘ (см. Ρ€Π°Π·Π΄Π΅Π» 3.5.4). Подобно Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ strcmp(), функция s.compare() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΡƒΠ»ΡŒ, ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ»ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ€Π°Π²Π½Π° Π»ΠΈ строка s, большС ΠΈΠ»ΠΈ мСньшС строки, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠΉ Π΅Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ.

Как ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Ρ‚Π°Π±. 9.15, сущСствуСт ΡˆΠ΅ΡΡ‚ΡŒ вСрсий Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ compare(). Π•Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ зависят ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π»ΠΈ Π΄Π²Π΅ строки ΠΈΠ»ΠΈ строка ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ массив. Π’ ΠΎΠ±ΠΎΠΈΡ… случаях ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈΠ±ΠΎ всю строку, Π»ΠΈΠ±ΠΎ Π΅Π΅ Ρ‡Π°ΡΡ‚ΡŒ.


Π’Π°Π±Π»ΠΈΡ†Π° 9.15. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ s.compare()

s2 Π‘Ρ€Π°Π²Π½ΠΈΠ²Π°Π΅Ρ‚ строку s со строкой s2 pos1, n1, s2 Π‘Ρ€Π°Π²Π½ΠΈΠ²Π°Π΅Ρ‚ n1 символов, начиная с ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ pos1 ΠΈΠ· строки s, со строкой s2 pos1, n1, s2, pos2, n2 Π‘Ρ€Π°Π²Π½ΠΈΠ²Π°Π΅Ρ‚ n1 символов, начиная с ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ pos1 ΠΈΠ· строки s, со строкой s2, начиная с ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ pos2 Π² строкС s2 cp Π‘Ρ€Π°Π²Π½ΠΈΠ²Π°Π΅Ρ‚ строку s с Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅ΠΌΡ‹ΠΌ Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ символом массивом, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ cp pos1, n1, cp Π‘Ρ€Π°Π²Π½ΠΈΠ²Π°Π΅Ρ‚ n1 символов, начиная с ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ pos1 ΠΈΠ· строки s, со строкой cp pos1, n1, cp, n2 Π‘Ρ€Π°Π²Π½ΠΈΠ²Π°Π΅Ρ‚ n1 символов, начиная с ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ pos1 ΠΈΠ· строки s, со строкой cp, начиная с символа n2 

9.5.5. ЧисловыС прСобразования

Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ содСрТат символы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ числа. НапримСр, числовоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 15 ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ строку с двумя символами, '1' ΠΈ '5'. На самом Π΄Π΅Π»Π΅ символьноС прСдставлСниС числа отличаСтся ΠΎΡ‚ Π΅Π³ΠΎ числового значСния. ЧисловоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 15, Ρ…Ρ€Π°Π½ΠΈΠΌΠΎΠ΅ Π² 16-разрядной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° short, Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0000000000001111, Π° символьная строка "15", прСдставлСнная ΠΊΠ°ΠΊ Π΄Π²Π° символа ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° Latin-1, Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0011000100110101. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π±Π°ΠΉΡ‚ прСдставляСт символ '1', Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ составит 061, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π±Π°ΠΉΡ‚, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ символ '5', Π² Π½Π°Π±ΠΎΡ€Π΅ Latin-1 ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 065.

Новый стандарт Π²Π²ΠΎΠ΄ΠΈΡ‚ нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ числовыми Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ string.


Π’Π°Π±Π»ΠΈΡ†Π° 9.16. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ строками ΠΈ числами

to_string(val) ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ вСрсии Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ строковоС прСдставлСниС значСния val. АргумСнт val ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ любой арифмСтичСский Ρ‚ΠΈΠΏ (см. Ρ€Π°Π·Π΄Π΅Π» 2.1.1). Π•ΡΡ‚ΡŒ вСрсии Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ to_string() для любого Ρ‚ΠΈΠΏΠ° с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΠΈ цСлочислСнного Ρ‚ΠΈΠΏΠ°, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚ΠΈΠΏ int ΠΈ большиС Ρ‚ΠΈΠΏΡ‹. ΠœΠ°Π»Ρ‹Π΅ цСлочислСнныС Ρ‚ΠΈΠΏΡ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ (см. Ρ€Π°Π·Π΄Π΅Π» 4.11.1) stoi(s, p, b) stol(s, p, b) stoul(s, p, b) stoll(s, p, b) stoull(s, p, b) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ числовоС содСрТимоС исходной подстроки s ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏ int, long, unsigned long, long long ΠΈΠ»ΠΈ unsigned long long ΡΠΎΠΎΡ‚вСтствСнно. АргумСнт b Π·Π°Π΄Π°Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ для прСобразования основаниС числа; ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ принято Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 10. АргумСнт p β€” ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ‚ΠΈΠΏ size_t, ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΠΉ индСкс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ нСчислового символа Π² строкС s; ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ p ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0. Π’ этом случаС функция Π½Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ индСкс stof(s, p) stod(s, p) stold(s, p) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ числовоС содСрТимоС исходной подстроки s ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏ float, double ΠΈΠ»ΠΈ long double соотвСтствСнно. АргумСнт p ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎ ΠΆΠ΅ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ Ρƒ цСлочислСнных ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ

int i = 42;