рдРрд╕рд╛ рди рдХрд░реЗрдВ:
std::string filepath("C:\\");
std::ofstream file(filepath.c_str());
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЪрд╛рд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдЧреИрд░-рдПрдПрд╕рд╕реАрдЖрдИрдЖрдИ рдкрд╛рддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рджреБ: рдЦрдж рдкрд░рд┐рдгрд╛рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдкрд╣рд▓реЗ рд╣реА рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдкреЛрд╕реНрдЯ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рд╕реАрдзреЗ рд╕реНрд░реЛрдд рдХреЗ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЕрдЧрд░ рдХреЛрдИ рдЗрд╕реЗ utf-8 рдореЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реИ, рддреЛ рд╡рд┐рдВрдбреЛрдЬрд╝-рдПрдХреНрд╕рдкреА рдореЗрдВ рдЖрдкрдХреЛ рдирд┐рд╖рд┐рджреНрдз рдкрд╛рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдорд┐рд▓ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред рдЖрдк рдЧреИрд░-рдПрдПрд╕рд╕реАрдЖрдИрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ (рдПрдХ рд╕реНрдЯреНрд░реАрдо рдпрд╛ рдПрдХ DB рдЬрд┐рд╕рд╕реЗ рдкрде рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ) рдордирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдпрд╣ рдЬрд╛рддреАрдп рднреЗрджрднрд╛рд╡ рд╣реИ! рддрддреНрдХрд╛рд▓ рд╕реБрдзрд╛рд░:
std::wstring filepath= L"C:\"
std::ofstream file(filepath.c_str());
рдЧреИрд░-рдорд╛рдирдХ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрдм рддрдХ рд╢рд╛рдВрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЙрдиреНрд╣реЗрдВ рдХрдВрдкрд╛рдЗрд▓рд░ (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ, рдПрд╕рдЯреАрдПрд▓) рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддреА рд╣реИред рдФрд░ рдлрд┐рд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ ...
- "рдирд┐рд░рд╛рд▓рд╛ рдЬреАрд╕реАрд╕реА" рдпрд╛ "рдирд┐рд░рд╛рд▓рд╛ stlport" рдореЗрдВ ofstream рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ :: ofstream (wchar_t *)
рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдорд╛рдирдХ рдЕрдкрдиреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХрд╛ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ (рдЕрднреА рддрдХ C ++ 0x рдХреЛ рд╕реНрдкрд░реНрд╢ рди рдХрд░реЗрдВ)ред рдореБрд▓рд╛рдпрдо рдХреЗ рд▓рд┐рдП рдпрд╣ рд╢реБрджреНрдз рдЙрддреНрд╕рд╛рд╣ рд╣реИред
рдХреНрдпрд╛ рдХрд░реЗрдВ?
рдХрдИ рд╡рд┐рдХрд▓реНрдк
- рд░рд╛рд╕реНрддреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдмрдврд╝рд╛рд╡рд╛ :: рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо)
- Std :: locale рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ
- рдЕрдкрдирд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░реЗрдВ
рддреАрд╕рд░реЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдкрд╣рд▓реЗ рд╡рд╛рд▓реЗ рдХреЗ рд╕рд╛рде рднреА, рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ:
- #include <boost / filesystem / fstream.hpp>
- # рдЕрд▓рдЧ рдХрд░реЗрдВ <string>
- namepace fs = boost :: filesystem ;
- int main ( int argc, char * argv )
- {
- std :: wstring рдлрд╝рд╛рдЗрд▓рдкрде ( L "C: \ test" ) ;
- fs : ofstream ( filepath ) ;
- рд╡рд╛рдкрд╕реА 0 ;
- }
рд▓реЗрдХрд┐рди рджреВрд╕рд░реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдЬреЛ рд▓реЛрдЧ рдореИрдЯрд░рд┐рдпрд▓ рдирд╣реАрдВ рд╕реАрдЦрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
Std :: locale рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ
рд░рд┐рдЯреНрд░реАрдЯред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкрд░реЗрд╢рд╛рди рдХрд░рдирд╛: рдореВрд▓ рдирд┐рд╡рд╛рд╕реА рдореЗрдВ рдЙрдЪрд┐рдд рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рд╕рдорд░реНрдерди рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рдЖрдкрдХреЛ рддреГрддреАрдп-рдкрдХреНрд╖ рдПрд╕рдЯреАрдПрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП stlport) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, std :: locale ("") рдлрд╝рдВрдХреНрд╢рди рд╣рдореЗрд╢рд╛ std :: locale ("C") рджреЗрддрд╛ рд╣реИ, рдЬреЛ рднреА рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рд╣реА stlport рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдХрдореА рд╣реИред рдорд┐рдВрдЧрд╡ + рд╕реНрдЯрд╛рд▓рдкреЛрд░реНрдЯ + рдмреВрд╕реНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рд▓рд┐рдЦрд╛ рд╣реИ ред
рд╣рдореЗрдВ рдХреЗрд╡рд▓ рд╕рд░рд▓ рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рд╣реИ - рд╣рдо "рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд" рд░реВрдк рдореЗрдВ рдЧреИрд░-рдПрдПрд╕рд╕реАрдЖрдИрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдпрд╣реА рд╣реИ, рд╣рдо std рдореЗрдВ рдкрде рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ :: рдПрдХ рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдзрд╛рд░рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ wstring, рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдЗрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рд╕рдВрдХреАрд░реНрдг рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдЗрд╕ рддрдереНрдп рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдХрд┐ рдЪреВрдВрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЕрдкрдиреА рднрд╛рд╖рд╛ рдХреЗ рдкрд╛рддреНрд░реЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рджреЗрдЦрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдкрде рдХреА рд╕рд╣реА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╡рд┐рд╕реНрддреГрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╕рдВрдХреАрд░реНрдг рдХрд░рдиреЗ рдХреА рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рддреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ cp866 рдПрдиреНрдХреЛрдбреЗрдб рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдкрде рд╣реИред рд╣рдореЗрдВ рдЗрд╕ рдкрде рдкрд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ:
- # рдХрд┐рдВрдХрд░реНрддрд╡реНрдпрд╡рд┐рдореВрдврд╝ <iostream>
- # рдЕрд▓рдЧ рдХрд░реЗрдВ <string>
- # рдЕрд▓рдЧ рдХрд░реЗрдВ <
- # рдкрддрд╛ рд▓рдЧрд╛рдПрдБ <рд╕реНрдерд╛рдиреАрдп>
- # рдпрд╛рдж <
- #include "facet / codecvt / codecvt_cp866.hpp"
- / ** @ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд░реНрдгрди рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рд▓реЛрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рд╕реНрддреГрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ
- @return рдПрдХ рд╕рдВрдХреБрдЪрд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╛ рд░рд┐рдХреНрдд рд╕рдВрдХреБрдЪрд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ
- рдорд╛рдорд▓реЗред рдпрджрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ * /
- std :: рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрдХрд░рд╛ ( const std :: wstring & wstr, const std :: locale & loc )
- {
- const size_t sz = wstrред рд▓рдВрдмрд╛рдИ ( ) ;
- рдЕрдЧрд░ ( sz == 0 )
- рд╡рд╛рдкрд╕реА std :: string ( ) ;
- mbstate_t рд░рд╛рдЬреНрдп = 0 ;
- char * cnext ;
- const wchar_t * wnext ;
- const wchar_t * wcstr = wstrред c_str ( ) ;
- char * рдмрдлрд░ = рдирдпрд╛ char [ sz + 1 ] ;
- std :: uninitialized_fill ( рдмрдлрд░, рдмрдлрд░ + sz + 1 , 0 ) ;
- typedef std :: codecvt < wchar_t , char , mbstate_t > cvt ;
- cvt :: рдкрд░рд┐рдгрд╛рдо Res ;
- res = std :: use_facet < cvt > ( loc ) ред рдмрд╛рд╣рд░ ( рд╕реНрдерд┐рддрд┐, wcstr, wcstr + sz, wnext,
- рдмрдлрд╝рд░, рдмрдлрд╝рд░ + sz, cnext ) ;
- std :: string result ( рдмрдлрд░ ) ;
- рдЕрдЧрд░ ( Res == cvt :: рддреНрд░реБрдЯрд┐ )
- рд╡рд╛рдкрд╕реА std :: string ( ) ;
- рд╡рд╛рдкрд╕реА рдкрд░рд┐рдгрд╛рдо ;
- }
- / ** @ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рд▓реЛрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ
- @return рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╛ рдПрдХ рдЦрд╛рд▓реА рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИ
- рдпрджрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИред * /
- std :: wstring рдЪреМрдбрд╝реА ( const std :: string & str, const std :: locale & loc )
- {
- const size_t sz = strред рд▓рдВрдмрд╛рдИ ( ) ;
- рдЕрдЧрд░ ( sz == 0 )
- рд╡рд╛рдкрд╕реА std :: wstring ( ) ;
- mbstate_t рд░рд╛рдЬреНрдп = 0 ;
- const char * cnext ;
- wchar_t * wnext ;
- const char * cstr = strред c_str ( ) ;
- wchar_t * рдмрдлрд░ = рдирдпрд╛ wchar_t [ sz + 1 ] ;
- std :: uninitialized_fill ( рдмрдлрд░, рдмрдлрд░ + sz + 1 , 0 ) ;
- typedef std :: codecvt < wchar_t , char , mbstate_t > cvt ;
- cvt :: рдкрд░рд┐рдгрд╛рдо Res ;
- res = std :: use_facet < cvt > ( loc ) ред рдореЗрдВ ( рд╕реНрдерд┐рддрд┐, рдХрд╕реНрддреВрд░реА, рдХрд╕реНрддреВрд░реА + sz, cnext,
- рдмрдлрд╝рд░, рдмрдлрд╝рд░ + sz, wnext ) ;
- std :: wstring рдкрд░рд┐рдгрд╛рдо ( рдмрдлрд░ ) ;
- рд╣рдЯрд╛рдирд╛ [ ] рдмрдлрд░ ;
- рдЕрдЧрд░ ( Res == cvt :: рддреНрд░реБрдЯрд┐ )
- рд╡рд╛рдкрд╕реА std :: wstring ( ) ;
- рд╡рд╛рдкрд╕реА рдкрд░рд┐рдгрд╛рдо ;
- }
- int main ( int argc, char * argv [ ] )
- {
- // рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдкрде рдХреЗ рд╕рд╛рде рдПрдХ cp866 рдлрд╝рд╛рдЗрд▓ рд╣реИ
- std :: ofile ofile ( "input.txt" , std :: ios :: рдмрд╛рдЗрдирд░реА ) ;
- рдЕрдЧрд░ ( ofile )
- {
- std :: cerr << "рддреНрд░реБрдЯрд┐ рдУрдкрди рдлрд╝рд╛рдЗрд▓" << std :: endl ;
- рд╡рд╛рдкрд╕реА 0 ;
- }
- std :: ostreambuf_iterator < char > рд▓реЗрдЦрдХ ( ofile ) ;
- * ( рд▓реЗрдЦрдХ ) = 0x2 ; // рдЯреА
- * ( ++ рд▓реЗрдЦрдХ ) = 0xa5 ; // рдИ
- * ( ++ рд▓реЗрдЦрдХ ) = 0xe1 ; // рдПрд╕
- * ( ++ рд▓реЗрдЦрдХ ) = 0x2 ; // рдЯреА
- ofileред рдХрд░реАрдм ( ) ;
- // рдкрде рдкрдврд╝реЗрдВ
- std :: locale cp866 ( std :: locale ( ) , new codecvt_cp866 ) ;
- std :: wifstream ifile ( "input.txt" , std :: ios :: Binary ) ;
- ifileред imbue ( cp866 ) ;
- std :: wstring wpath ;
- ifile >> wpath ;
- ifile >> wpath ;
- ifileред рдХрд░реАрдм ( ) ;
- // рдЗрд╕ рдкрде рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ
- std :: ofstream рдлрд╝рд╛рдЗрд▓ ( рд╕рдВрдХреАрд░реНрдг ( wpath, std :: locale ( "" ) ) ред c_str ( ) ) ;
- рдлрд╝рд╛рдЗрд▓ << "рдкрд░реАрдХреНрд╖рдг" ;
- рдлрд╝рд╛рдЗрд▓ ред рдХрд░реАрдм ( ) ;
- }
рдкрд╣рд▓реБрдУрдВ рдХреЛ git-hub рдкрд░ рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕рд╛рд░рд╛рдВрд╢
рдпрджрд┐ рдЖрдк argv рд╕реЗ рдкрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ)ред "рдмрд╛рд╣рд░реА рд╡рд╛рддрд╛рд╡рд░рдг" рд╕реЗ, рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдзрд╛рд░рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрде рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рдХрд╕реНрдЯрдо рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд╕рдВрдХреАрд░реНрдг рдХрд░реЗрдВред
рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
0. рдорд╛рдирдХ рдХреЗ рд▓рд┐рдП
1. рд╕реНрдЯреНрд░реЗрдВрд╢реЗрдк рдХреА рдкреБрд╕реНрддрдХ (рддреАрд╕рд░рд╛ рд╡рд┐рд╢реЗрд╖ рд╕рдВрд╕реНрдХрд░рдг, рдкрд░рд┐рд╢рд┐рд╖реНрдЯ)
2. рдорд┐рдВрдЧрд╡реЙрдХ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП ред
3. рдмрдврд╝рд╛рд╡рд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП ред
4. рдкрд╣рд▓реБрдУрдВ рдФрд░ рдПрдирдХреЛрдбрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рд╕рднреА рдкреНрд░рддреНрдпрдХреНрд╖ рддрд░реАрдХреЗ!
UPD: рдЦреИрд░, рдЬреИрд╕реЗ рдХрд┐ рдЧреЛрд░рдереМрд░рд╛87 , рдорд┐рдЧреБрди рдФрд░ рдирд╛рд░рд┐рд▓ рдиреЗ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдмреИрдХрд╕реНрд▓реИрд╢ рдФрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрде рднреА рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред