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

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

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

Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Ρ†ΠΈΠΊΠ» while Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π² Π²Π΅ΠΊΡ‚ΠΎΡ€ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса PersonInfo. Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Ρ†ΠΈΠΊΠ» while продолТаСтся, ΠΏΠΎΠΊΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ cin Π½Π΅ встрСтит ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π°.

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

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 8.9. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ упраТнСния 8.1.2, для Π²Ρ‹Π²ΠΎΠ΄Π° содСрТимого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса istringstream.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 8.10. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для сохранСния ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки ΠΈΠ· Ρ„Π°ΠΉΠ»Π° Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅ vector<string>. Π—Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса istringstream для чтСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ слову Π·Π° Ρ€Π°Π·.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 8.11. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° этого Ρ€Π°Π·Π΄Π΅Π»Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»Π° свой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса istringstream Π²ΠΎ внСшнСм Ρ†ΠΈΠΊΠ»Π΅ while. КакиС измСнСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ внСсти, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ record Π²Π½Π΅ этого Ρ†ΠΈΠΊΠ»Π°? ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, пСрСнСся ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° record Π²ΠΎ Π²Π½Π΅ Ρ†ΠΈΠΊΠ»Π° while, ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, всС Π»ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ измСнСния внСсСны.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 8.12. ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π² классС PersonInfo Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ внутриклассовыС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹?

8.3.2. ИспользованиС класса ostringstream

Класс ostringstream ΠΏΠΎΠ»Π΅Π·Π΅Π½ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ нСбольшими частями Π·Π° Ρ€Π°Π·, Π½Π΅ откладывая Π΅Π³ΠΎ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ врСмя. НапримСр, ΠΌΠΎΠ³Π»Π° Π±Ρ‹ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Ρ‹ Π² ΠΊΠΎΠ΄Π΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°. Если всС Π½ΠΎΠΌΠ΅Ρ€Π° допустимы, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€Π° ΠΈ вывСсти ΠΈΡ… Π² Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ». Если Ρƒ ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π±ΡƒΠ΄ΡƒΡ‚ нСдопустимыС Π½ΠΎΠΌΠ΅Ρ€Π°, Ρ‚ΠΎ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΈΡ… Π² Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ. ВмСсто этого слСдуСт вывСсти сообщСниС ΠΎΠ± ошибкС, содСрТащСС имя Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° ΠΈ список Π΅Π³ΠΎ нСдопустимых Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ².

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ нСльзя Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ для Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Π΄Π°Π½Π½Ρ‹Π΅ с нСдопустимыми Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ, ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ произвСсти Π²Ρ‹Π²ΠΎΠ΄, ΠΏΠΎΠΊΠ° Π½Π΅ просмотрим ΠΈ Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ всС ΠΈΡ… Π½ΠΎΠΌΠ΅Ρ€Π°. Но ΠΌΠΎΠΆΠ½ΠΎ "Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ" Π²Ρ‹Π²ΠΎΠ΄ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса ostringstream:

for (const auto &entry : people) { // для каТдой записи в people

 ostringstream formatted, badNums; // ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ

                                   // Ρ†ΠΈΠΊΠ»Π΅

 for (const auto &nums : entry.phones) { // для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅Ρ€Π°

  if (!valid(nums)) {

   badNums << " " << nums; // строка Π² badNums

  } else

   // "запись" Π² строку formatted

   formatted << " " << format(nums);

 }

 if (badNums.str().empty()) // Ссли ΠΏΠ»ΠΎΡ…ΠΈΡ… Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² Π½Π΅Ρ‚

  os << entry.name << " "   // вывСсти имя

     << formatted.str() << endl; // ΠΈ ΠΏΠ΅Ρ€Π΅Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π½ΠΎΠΌΠ΅Ρ€Π°

 else // Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС вывСсти имя ΠΈ ΠΏΠ»ΠΎΡ…ΠΈΠ΅ Π½ΠΎΠΌΠ΅Ρ€Π°

  cerr << "input error: " << entry.name

       << " invalid number(s) " << badNums.str() << endl;

}

Π’ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ подразумСваСтся, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, valid() ΠΈ format(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ Π½ΠΎΠΌΠ΅Ρ€Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ². Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ β€” использованиС строковых ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² formatted ΠΈ badNums. Для записи Π² эти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Ρ‹Π²ΠΎΠ΄Π° (<<). Но ΠΎΠ½ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ "ΠΏΠΈΡˆΡƒΡ‚" строковыС манипуляторы. Они Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ символы ΠΊ строкам Π² строковых ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ… formatted ΠΈ badNums соотвСтствСнно.

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

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 8.13. ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ² ΠΈΠ· этого Ρ€Π°Π·Π΄Π΅Π»Π° Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠ· ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, Π° Π½Π΅ ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° cin.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 8.14. ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ entry ΠΈ nums Π±Ρ‹Π»ΠΈ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΊ const auto &?

РСзюмС

Π―Π·Ρ‹ΠΊ Π‘++ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ классы для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π°.

β€’ ΠšΠ»Π°ΡΡ iostream ΠΎΡ‚Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄ Π½Π° консоль.

β€’ ΠšΠ»Π°ΡΡ fstream ΠΎΡ‚Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄ Π² ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ».

β€’ ΠšΠ»Π°ΡΡ stringstream ΠΎΡ‚Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄ Π² строки Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти.

ΠšΠ»Π°ΡΡΡ‹ fstream ΠΈ stringstream связаны происхоТдСниСм ΠΎΡ‚ класса iostream. ΠšΠ»Π°ΡΡΡ‹ Π²Π²ΠΎΠ΄Π° происходят ΠΎΡ‚ класса istream, Π° классы Π²Ρ‹Π²ΠΎΠ΄Π° β€” ΠΎΡ‚ класса ostream. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ класса istream, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ класса ifstream ΠΈΠ»ΠΈ istringstream. Аналогично для классов Π²Ρ‹Π²ΠΎΠ΄Π°, происходящих ΠΎΡ‚ класса ostream.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Ρ„Π»Π°Π³ΠΎΠ² состояния, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ…, Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Π»ΠΈ Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Если ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° ошибка (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, встрСтился ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π° Π² ΠΏΠΎΡ‚ΠΎΠΊΠ΅ Π²Π²ΠΎΠ΄Π°), Ρ‚ΠΎ состояниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° окаТСтся Ρ‚Π°ΠΊΠΎΠ²ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ дальнСйший Π²Π²ΠΎΠ΄ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½, ΠΏΠΎΠΊΠ° ошибка Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ исправлСна. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° прСдоставляСт Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для установки ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ этих состояний.

Π’Π΅Ρ€ΠΌΠΈΠ½Ρ‹

Класс fstream. Π€Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ запись Π² Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ„Π°ΠΉΠ». По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса ifstreams ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ» ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π² Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… in ΠΈ out.

Класс ifstream. Π€Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ, Ρ‡ΠΈΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ„Π°ΠΉΠ»Π°. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΠΎΡ‚ΠΎΠΊ ifstream открываСтся Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ in.

Класс istringstream. Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ, Ρ‡ΠΈΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· строки.

Класс ofstream. Π€Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ, Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ„Π°ΠΉΠ». По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΠΎΡ‚ΠΎΠΊ ofstream открываСтся Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ out.

Класс ostringstream. Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ, Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π΄Π°Π½Π½Ρ‹Π΅ Π² строку.

Класс stringstream. Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ, Ρ‡ΠΈΡ‚Π°ΡŽΡ‰ΠΈΠΉ ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π΄Π°Π½Π½Ρ‹Π΅ Π² строку.

НаслСдованиС (inheritance). ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ срСдство, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ Ρ‚ΠΈΠΏΡƒ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. ΠšΠ»Π°ΡΡΡ‹ ifstream ΠΈ istringstream происходят ΠΎΡ‚ классов istream ΠΈ ofstream, Π° класс ostringstream происходит ΠΎΡ‚ класса ostream. Π‘ΠΎΠ»Π΅Π΅ подробная информация ΠΎ наслСдовании ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π² Π³Π»Π°Π²Π΅ 15.

Π Π΅ΠΆΠΈΠΌ Ρ„Π°ΠΉΠ»Π° (file mode). Π€Π»Π°Π³ΠΈ классов Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° fstream, устанавливаСмыС ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ Ρ„Π°ΠΉΠ»Π° ΠΈ Π·Π°Π΄Π°ΡŽΡ‰ΠΈΠ΅ способ Π΅Π³ΠΎ примСнСния. Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ (string stream). ΠŸΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ‡ΠΈΡ‚Π°ΡŽΡ‰ΠΈΠΉ ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π΄Π°Π½Π½Ρ‹Π΅ Π² строку. ΠšΡ€ΠΎΠΌΠ΅ возмоТностСй, присущих классу iostream, классы строковых ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ str(). Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ str() Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ строку, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ связан ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ строкового ΠΏΠΎΡ‚ΠΎΠΊΠ°, Π° Π΅Π΅ Π²Ρ‹Π·ΠΎΠ² со строковым Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ свяТСт строковый ΠΏΠΎΡ‚ΠΎΠΊ с ΠΊΠΎΠΏΠΈΠ΅ΠΉ этой строки.

Π€Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ (file stream). ΠŸΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ этого класса позволяСт Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ». ΠšΡ€ΠΎΠΌΠ΅ возмоТностСй, присущих классу iostream, класс fstream ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ функциями-Ρ‡Π»Π΅Π½Π°ΠΌΠΈ open() ΠΈ close(). Ѐункция-Ρ‡Π»Π΅Π½ open() ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½ΡƒΡŽ строку Π² стилС Π‘, которая содСрТит имя ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, Π·Π°Π΄Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π΅ΠΆΠΈΠΌ. Ѐункция-Ρ‡Π»Π΅Π½ close() Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ», с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ связан ΠΏΠΎΡ‚ΠΎΠΊ. Π•Π΅ слСдуСт Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΡ€Π΅ΠΆΠ΄Π΅, Ρ‡Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„Π°ΠΉΠ».

Π€Π»Π°Π³ состояния (condition state). Π€Π»Π°Π³ΠΈ ΠΈ связанныС с Π½ΠΈΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹Ρ… классов ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π΅Π½ Π»ΠΈ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ для использования.

Π“Π»Π°Π²Π° 9

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹

Π­Ρ‚Π° Π³Π»Π°Π²Π° ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ останавливаСтся Π½Π° ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π΅ Π³Π»Π°Π²Ρ‹ 3 ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ обсуТдСниС ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ элСмСнтов Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ соотвСтствуСт порядку ΠΈΡ… добавлСния Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. Π’ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ нСсколько ассоциативных ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², позиция элСмСнтов ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… зависит ΠΎΡ‚ ΠΊΠ»ΡŽΡ‡Π°, ассоциируСмого с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ элСмСнтом. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, спСцифичСскиС для ассоциативных ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² Π³Π»Π°Π²Π΅ 11.

ΠšΠ»Π°ΡΡΡ‹ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ±Ρ‰ΠΈΠΉ интСрфСйс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² дополняСт собствСнным способом. ΠžΠ±Ρ‰ΠΈΠΉ интСрфСйс ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… классов; Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ стало извСстно ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°, относится ΠΊ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ. Однако ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π²ΠΈΠ΄ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ возмоТностями.

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ (container) содСрТит ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ (sequential container) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ порядок, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ хранятся элСмСнты ΠΈ прСдоставляСтся доступ ΠΊ Π½ΠΈΠΌ. Π­Ρ‚ΠΎΡ‚ порядок Π½Π΅ зависит ΠΎΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ элСмСнтов, ΠΎΠ½ соотвСтствуСт ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ элСмСнты ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π½ΠΈΡ…, ассоциативныС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ (упорядочСнныС ΠΈ нСупорядочСнныС) хранят свои элСмСнты Π½Π° основании значСния ΠΊΠ»ΡŽΡ‡Π°, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ описано Π² Π³Π»Π°Π²Π΅ 11.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° прСдоставляСт Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Ρ€ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½Ρ‹Ρ… Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π°, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, опрСдСляя ΠΈΠ½ΠΎΠΉ интСрфСйс ΠΊ функциям ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. АдаптСры Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² ΠΊΠΎΠ½Ρ†Π΅ этой Π³Π»Π°Π²Ρ‹.

Π­Ρ‚Π° Π³Π»Π°Π²Π° основана Π½Π° ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π΅ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² 3.2–3.4. Π—Π΄Π΅ΡΡŒ подразумСваСтся, Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ Π·Π½Π°ΠΊΠΎΠΌ с ΠΈΡ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠΌ.