ΠΡΠΈΠΌΠ΅Ρ 13.3. Π―Π²Π½ΠΎΠ΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΉ
#include <iostream>
#include <fstream>
#include <locale>
#include <string>
using namespace std;
int main() {
try {
locale loc("");
cout << "Locale name = " << loc.name() << endl;
locale locFr("french");
locale locEn("english-american");
locale locBr("portuguese-brazilian");
cout.imbue(locFr); // Π£Π²Π΅Π΄ΠΎΠΌΠΈΡΡ cout ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ
// ΡΡΠ°Π½ΡΡΠ·ΡΠΊΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
cout << "3.14 (French) = " << 3.14 << endl;
cout << "Name = " << locFr.name() << endl;
cout.imbue(locEn); // Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈΠΉ (Π°ΠΌΠ΅ΡΠΈΠΊΠ°Π½ΡΠΊΠΈΠΉ
// Π²Π°ΡΠΈΠ°Π½Ρ)
cout << "3.14 (English) = " << 3.14 << endl;
cout << "Name = " << locEn.name() << endl;
cout.imbue(locBr); // Π£Π²Π΅Π΄ΠΎΠΌΠΈΡΡ cout ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ
// Π±ΡΠ°Π·ΠΈΠ»ΡΡΠΊΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
cout << "3.14 (Brazil) = " << 3.14 << endl;
cout << "Name = " << locBr.name() << endl;
} catch (runtime_error& e) {
// ΠΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π΅Π²Π΅ΡΠ½ΠΎΠ΅ ΠΈΠΌΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΡΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
// runtime_error.
cerr << "Error: " << e.what() << endl;
}
}
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ Windows ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Visual C++ 7.1 Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
Locale name = English_United States.1252
3.14 (French) = 3,14
Name = French_France.1252
3.14 (English) = 3.14
Name = English_United States.1252
3.14 (Brazil) = 3,14
Name = Portuguese_Brazil.1252
ΠΡΡΡΠ΄Π° Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΌΠΎΡ ΠΌΠ°ΡΠΈΠ½Π° Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π½Π° Π°ΠΌΠ΅ΡΠΈΠΊΠ°Π½ΡΠΊΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ 1252. ΠΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΠΈΡΠ»ΠΎ Β«ΠΏΠΈΒ» ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π΄Π²ΡΡ Π΄ΡΡΠ³ΠΈΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΉ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π²ΠΎ ΡΡΠ°Π½ΡΡΠ·ΡΠΊΠΎΠΌ ΠΈ Π±ΡΠ°Π·ΠΈΠ»ΡΡΠΊΠΎΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ°Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π·Π°ΠΏΡΡΠ°Ρ Π²ΠΌΠ΅ΡΡΠΎ Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ. Π Π°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΡΡΡΡΡ ΡΠΎΠΆΠ΅ Π΄ΡΡΠ³ΠΎΠΉ: Π²ΠΎ ΡΡΠ°Π½ΡΡΠ·ΡΠΊΠΎΠΌ ΠΈ ΠΏΠΎΡΡΡΠ³Π°Π»ΡΡΠΊΠΎΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ±Π΅Π» Π²ΠΌΠ΅ΡΡΠΎ Π·Π°ΠΏΡΡΠΎΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠΈΡΠ»ΠΎ 1,000,000.25, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ΅ Π² Π°ΠΌΠ΅ΡΠΈΠΊΠ°Π½ΡΠΊΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅, ΠΈΠΌΠ΅Π»ΠΎ Π±Ρ Π²ΠΈΠ΄ 1 000 000,25 Π² ΡΠΎΡΠΌΠ°ΡΠ΅ ΡΡΠ°Π½ΡΡΠ·ΡΠΊΠΎΠΉ ΠΈ ΠΏΠΎΡΡΡΠ³Π°Π»ΡΡΠΊΠΎΠΉ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² Π²ΡΠ΅ ΠΆΠ΅ Π½Π΅ ΡΡΠΎΠΈΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΡΠ²Π½ΠΎ Π·Π°Π΄Π°Π²Π°Ρ ΠΈΡ ΠΈΠΌΠ΅Π½Π°. Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ ΠΏΠ΅ΡΠ°ΡΠΈ ΡΠΈΡΠ΅Π», Π΄Π°Ρ, Π΄Π΅Π½Π΅ΠΆΠ½ΡΡ ΠΈ ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ Π΄ΡΡΠ³ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΡΡΡΡ ΡΡΡΠΎΠΊΡ ΠΈ Π·Π°ΠΊΡΠ΅ΠΏΠ»ΡΡ Π΅Π΅ Π·Π° ΠΏΠΎΡΠΎΠΊΠΎΠΌ.
ΠΡΠ°Π²ΠΈΠ»Π° ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΡΠ°Π½Π½ΡΠΌΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΠΊΡΠ°ΡΠΊΠΎ ΠΈΠ·Π»ΠΎΠΆΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ.
β’ ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½Π°Ρ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Β«Π‘Β», ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅ΡΡΡ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π»ΡΠ±ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎΠΉ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
β’ ΠΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈ ΡΡΠΎΠΉ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Β«Π‘Β».
β’ ΠΠΎΠΏΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΉ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ ΠΏΡΡΡΡΡ ΡΡΡΠΎΠΊΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ locale, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ locale("").
β’ ΠΠ±ΡΠ΅ΠΊΡ locale Π΄Π»Ρ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ ΡΡΡΠΎΠΊΡ, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΡΡΡΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ locale("portuguese-brazilian"). ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΈ ΡΡΡΠΎΠΊΠΈ Π½Π΅ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΎΠ²Π°Π½Ρ.
β’ ΠΠΎΡΠ»Π΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° locale, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ΅Π³ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΡΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ locale::global. ΠΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠΈ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ.
β’ ΠΠ»Ρ ΠΏΠΎΡΠΎΠΊΠ° Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ ΡΠ²Π½ΠΎ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Π° imbue.
ΠΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ, ΡΡΠΈΡΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΌΠ΅ΡΡΠ½ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ, ΠΏΡΠΈΠΌΠ΅Π½ΡΠΉΡΠ΅ Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ Π΄Π°Π½Π½ΡΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΠΈΠ΄ΠΈΡ. Π’ΠΎ Π΅ΡΡΡ Π΅ΡΠ»ΠΈ Π²Π°ΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ ΡΠΈΡΠ»ΠΎ Π² ΡΠΎΡΠΌΠ°ΡΠ΅, ΠΏΡΠΈΠ²ΡΡΠ½ΠΎΠΌ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΡΠΉΡΠ΅ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ Π·Π°ΠΊΡΠ΅ΠΏΠΈΡΠ΅ Π΅Π΅ Π·Π° ΠΏΠΎΡΠΎΠΊΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠΈΡΠ»ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π»ΠΎΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ. ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ°ΠΉΠ» ΠΈΠ»ΠΈ Π² ΠΊΠ°ΠΊΡΡ-ΡΠΎ Π΄ΡΡΠ³ΡΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΡ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠ°ΠΌΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π‘, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΡ. ΠΡΠ»ΠΈ Π²Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ²Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ²Π½ΠΎ Π·Π°ΠΊΡΠ΅ΠΏΠΈΡΡ Π΅Π΅ Π·Π° ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΌΠΈ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π‘. ΠΡ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ Π΄Π²ΡΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ: ΡΠΎΠ·Π΄Π°Π²Π°Ρ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Β«Π‘Β» ΠΈΠ»ΠΈ Π²ΡΠ·ΡΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ locale::classic().
ofstream out("data.dat");
out.imbue(locale::classic());
out << pi << endl; // ΠΠ°ΠΏΠΈΡΠ°ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π‘
Π‘ΡΠΈΡΡΠ²Π°ΡΡΡΡ ΡΠΈΡΠ»Π° Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΡΠΈΡΠ»Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ°Π½ΡΡΠ·ΡΠΊΠΎΠΉ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π·Π°ΠΏΠΈΡΠΈ Π΅Π³ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π‘ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅.
double d;
cin.imbue(locale("french"));
cin >> d;
cout << "In English: " << d;
ΠΡΠ»ΠΈ Π²Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ Π²Π²Π΅Π΄Π΅ΡΠ΅ 300,00, ΠΎΠ½Π° ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ 300.
Π§ΡΠΎΠ±Ρ ΠΏΠΎΡΠΎΠΊ ΠΏΠΎΠ΄ΡΠΈΠ½ΡΠ»ΡΡ ΠΌΠ΅ΡΡΠ½ΡΠΌ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡΠΌ ΠΏΠΎ Π²ΡΠ²ΠΎΠ΄Ρ ΡΠΈΡΠ΅Π», ΡΠ²Π½ΠΎ Π·Π°ΠΊΡΠ΅ΠΏΠΈΡΠ΅ Π·Π° ΠΏΠΎΡΠΎΠΊΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ locale ΡΠ΅Π»Π΅Π²ΠΎΠΉ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ imbue. ΠΡΠ»ΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΠΎ Π²ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, ΡΠ΄Π΅Π»Π°ΠΉΡΠ΅ Π΅Π΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ. ΠΠ½Π°ΡΠ΅Π½ΠΈΡ Π΄Π΅Π½Π΅ΠΆΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π΄ΡΡΠ³ΠΎΠΌΡ; ΡΠΌ. ΡΠ΅ΡΠ΅ΠΏΡ 13.4, Π³Π΄Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ ΠΈ ΡΡΠΈΡΡΠ²Π°ΡΡ Π΄Π΅Π½Π΅ΠΆΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
Π‘ΠΌΠΎΡΡΠΈ ΡΠ°ΠΊΠΆΠ΅Π Π΅ΡΠ΅ΠΏΡ 13.4.
13.3. ΠΠ°ΠΏΠΈΡΡ ΠΈ ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π°Ρ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½
Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π°Ρ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ΅ΡΡΠ½ΡΠ΅ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΈΠΏ time_t ΠΈ tm struct ΠΈΠ· <ctime>, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΡΠ΅ΡΡ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΠ΅ Π² <locale>, Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ ΠΈ ΡΡΠ΅Π½ΠΈΡ Π΄Π°Ρ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ (ΡΠ°ΡΠ΅ΡΡ Π²ΡΠΊΠΎΡΠ΅ Π±ΡΠ΄ΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΠΏΡΠΈ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ°). Π‘ΠΌ. ΠΏΡΠΈΠΌΠ΅Ρ 13.4.
ΠΡΠΈΠΌΠ΅Ρ 13.4. ΠΠ°ΠΏΠΈΡΡ ΠΈ ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π°Ρ
#include <iostream>
#include <ctime>
#include <locale>
#include <sstream>
#include <iterator>
using namespace std;
void translateDate(istream& in, ostream& out) {
// Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΡΠΈΡΡΠ²Π°ΡΡΠΈΠΉ Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ
const time get<char>& dateReader =
use_facet<time_get<char> >(in.getloc());
// Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ ΡΠ°ΡΠ΅ΡΠΎΠΌ Π΄Π»Ρ
// ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ Π½Π°Ρ ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ
ios_base::iostate state = 0;
// ΠΠ°ΡΠΊΠ΅Ρ ΠΊΠΎΠ½ΡΠ°
istreambuf_iterator<char> end;
tm t; // Π‘ΡΡΡΠΊΡΡΡΠ° Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (ΠΈΠ· <ctime>)
// Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²ΡΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½ΠΎ, ΡΡΠΈΡΠ°ΡΡ Π΄Π°ΡΡ ΠΈΠ· Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°
// ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π΅Π΅ Π² ΡΡΡΡΠΊΡΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
dateReader.get_date(in, end, in, state, &t);
// Π Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π΄Π°ΡΠ° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΡΡΡΠΊΡΡΡΠ΅ tm. ΠΡΠ²Π΅ΡΡΠΈ Π΅Π΅ Π² ΠΏΠΎΡΠΎΠΊ,
// ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ. Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²ΡΠ²ΠΎΠ΄ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ
// Π΄ΠΎΡΡΠΎΠ²Π΅ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· t.
if (state == 0 || state == ios_base::eofbit) { // Π§ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ.
const Time_put<char>& dateWriter =
use_facet<time_put<char> >(out.getloc());
char fmt[] = "%x";
if (dateWriter.put{out, out, out.fill(),
&t, &fmt[0], &fmt[2]).failed())
cerr << "Unable to write to output stream.\n";
} else {
cerr << "Unable to read cin!\n";
}
}
int main() {
cin.imbue(locale("english"));
cout.imbue(locale("german"));
translateDate(cin, cout);
}
ΠΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠ΄Π°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ
3/28/2005
28.03.2005
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΠ»Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΠΈ ΡΡΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΊΠ»Π°ΡΡΠ° locale. ΠΡΠΎΡΡΠΈΡΠ΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡΡ Π³Π»Π°Π²Ρ, Π΅ΡΠ»ΠΈ Π²Ρ Π΅ΡΠ΅ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΠΌΠΈ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΠΈ ΡΠ°ΡΠ΅ΡΠΎΠ².
Π C++ Π½Π΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π° Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΌΠΈ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ°ΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ time_t ΠΈ ΡΡΡΡΠΊΡΡΡΠ° tm ΠΈΠ· <ctime>. ΠΡΠ»ΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ ΠΈ ΡΡΠΈΡΡΠ²Π°ΡΡ Π΄Π°ΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ΅Π΄ΡΡΠ² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π»ΡΠ±ΠΎΠ΅ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡ Π² ΡΡΡΡΠΊΡΡΡΡ tm. ΠΡΠΎ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ», ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π²Π°ΠΌΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΠΆΠ΅ ΠΈΠΌΠ΅ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Ρ Ρ ΡΡΠ΅ΡΠΎΠΌ ΠΌΠ΅ΡΡΠ½ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ.
Π Π°Π½Π΅Π΅ Ρ Π³ΠΎΠ²ΠΎΡΠΈΠ», ΡΡΠΎ ΡΠ°ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ Π°ΡΠΏΠ΅ΠΊΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΎΡΡΠ°ΠΆΠ°ΡΡΠΈΠΉ Π΅Π΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ. ΠΠΎΠ»Π΅Π΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ, ΡΠ°ΡΠ΅Ρ β ΡΡΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½Π°Ρ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΠ°ΡΠΈΡ ΡΠ°Π±Π»ΠΎΠ½Π° ΠΊΠ»Π°ΡΡΠ° ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠ»Π°ΡΡΠ° Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ. Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ 13.4 Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠΎΠ·Π΄Π°Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΠ°ΡΠ΅ΡΠ° time_get.
const time_get<char*>& dateReader =
use_facet<time_get<char> >(in.getloc());
Π¨Π°Π±Π»ΠΎΠ½ ΡΡΠ½ΠΊΡΠΈΠΈ use_facet Π½Π°Ρ ΠΎΠ΄ΠΈΡ Π·Π°Π΄Π°Π½Π½ΡΠΉ ΡΠ°ΡΠ΅Ρ Π΄Π»Ρ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΠ°ΡΠ΅ΡΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°Π±Π»ΠΎΠ½Π°ΠΌΠΈ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΠ½ΠΎΡ ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΠΈΠΏΠ° char, Ρ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΡΡ ΠΌΠΎΠΉ ΠΊΠ»Π°ΡΡ time_get Π΄Π»Ρ char. Π‘ΡΠ°Π½Π΄Π°ΡΡ ΡΡΠ΅Π±ΡΠ΅Ρ, ΡΡΠΎΠ±Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π»Π° ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π±Π»ΠΎΠ½Π° Π΄Π»Ρ char ΠΈ wchar_t, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ΠΈ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ (Ρ ΠΎΡΡ Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΡΠΎΠΌΠ΅ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π‘). Π‘ΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΌΠ½ΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ time_get ΠΈΠΌΠ΅Π΅Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ const, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠΎ Π½Π°Π±ΠΎΡ ΠΏΡΠ°Π²ΠΈΠ» ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π΄Π°Π½Π½ΡΡ Π² ΡΠ°Π·Π½ΡΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡΡ , ΠΈ ΡΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° Π½Π΅ ΠΌΠΎΠ³ΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΡΠ΅ΡΠ° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅, Π³Π΄Π΅ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ.