рдПрдиреНрдХреЛрдбрд┐рдВрдЧ



рдЬрд▓реНрдж рдпрд╛ рдмрд╛рдж рдореЗрдВ рд╕рднреА рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЕрдкрдиреА рдЯреАрдо рдХреЗ рдХреЛрдб рдореЗрдВ рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди, рдХрднреА-рдХрднреА рдЕрдЬреАрдм, рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдПрдХ рд╡реНрдпрд╛рдЦреНрдпрд╛рддреНрдордХ рдмрд╛рддрдЪреАрдд рдХрд░рдиреА рдкрдбрд╝реАред рдиреАрдЪреЗ рдореИрдВ рдХреЛрдб рдореЗрдВ рдЧреИрд░-рдПрдПрд╕рд╕реАрдЖрдИрдЖрдИ рдкрд╛рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╣реА рдХрд╛рдо рдХреА рдЕрдкрдиреА рджреГрд╖реНрдЯрд┐ рд╕рд╛рдЭрд╛ рдХрд░реВрдВрдЧрд╛ред рдореБрдЭреЗ рд░рдЪрдирд╛рддреНрдордХ рдЖрд▓реЛрдЪрдирд╛ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред







рдХрд╛рд░реНрдп рд╕рд┐рджреНрдзрд╛рдВрдд



C ++ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рддрд░реНрдХ рд╕рд░рд▓ рдФрд░ рдкрд╛рд░рджрд░реНрд╢реА рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдпреЛрдЬрдирд╛ рдореЗрдВ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо рдПрдХ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - рдЗрд╕рдХреА рдЕрдкрдиреА рдЖрдВрддрд░рд┐рдХ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ, рдФрд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдзрд╛рд░рд╛рдПрдВ рдбреЗрдЯрд╛ рдХреЛрдбрд┐рдВрдЧ рдХреЛ рдмрд╛рд╣рд░реА рдХреЛрдб рд╕реЗ рдЖрдВрддрд░рд┐рдХ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдЖрдВрддрд░рд┐рдХ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдПрдХ рдмрд╛рд░ рдФрд░ рд╕рднреА рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред рдпрджрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЧреИрд░-рдПрдПрд╕рд╕реАрдЖрдИрдЖрдИ рд╡рд░реНрдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдВрддрд░рд┐рдХ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рддрд╛рд░реНрдХрд┐рдХ рд╡рд┐рдХрд▓реНрдк рдпреВрдирд┐рдХреЛрдб рд╣реИ, рдФрд░ рдПрд╕рдЯреАрдПрд▓ рдХреЛ рдорд╛рдирдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпреВрдЯреАрдПрдл -8 рдФрд░ рдЪрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрдорддреМрд░ рдкрд░ рдЕрдиреБрдЪрд┐рдд рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдРрд╕реА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ); рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд wchar_t рд╡рд░реНрдгреЛрдВ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рдФрд░ UCS-2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИред рдХреЛрдбрдХрд╡реЗрдЯ рдкрд╣рд▓реВ рдмрд╛рд╣рд░реА рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╕реЗ рдЖрдВрддрд░рд┐рдХ рдореЗрдВ рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдзрд╛рд░рд╛рдПрдБ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп рд╕реНрд╡рдпрдВ рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рд░реНрдп рдХрд░рддреА рд╣реИрдВред (рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓реВ рдкрд╣рд▓реЗ рдХреМрди рдереЗ )ред

рдореИрдВ рдКрдкрд░ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдХрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд╕рдордЭрд╛рдКрдВрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдПрдХ cp1251 рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рддреЗ рд╣реИрдВ, рдпрд╣ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ рдмрдврд╝рд╛рдПрдБ :: Xicive рдпреВрдирд┐рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ cp866 рдореЗрдВ cout рдПрдирдХреЛрдбреЗрдб (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╡рд┐рдВрдбреЛрдЬрд╝ рдХрдВрд╕реЛрд▓) рдореЗрдВ рд╕рд┐рд░рд┐рд▓рд┐рдХ рд╡рд░реНрдгрдорд╛рд▓рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред











рд╕реНрд░реЛрдд рдПрдирдХреЛрдбрд┐рдВрдЧ



рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ (рдмрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ) рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж рдХрд╣рдиреЗ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдЕрдкрдиреЗ рд╕рднреА рд╕реНрд░реЛрддреЛрдВ рдХреЛ UTF-8 рдореЗрдВ рд░рдЦрддрд╛ рд╣реВрдВ (рдпрджрд┐ рдЙрдирдореЗрдВ рдЧреИрд░-ASCII рд╡рд░реНрдгреЛрдВ рдХреЗ рд╕рд╛рде рд╡реНрдпрд╛рдкрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реИрдВ, рддреЛ рдореИрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ BOM рдЬреЛрдбрд╝ рджреЗрддрд╛ рд╣реВрдВ), рдЬреЛ рдореИрдВ рд╕рднреА рдХреЛ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдЖрдзреБрдирд┐рдХ рд╕рдВрдХрд▓рдХ рдЦреБрдж UCS-2 (рдпрд╛ UCS-4) рдореЗрдВ "L" рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд░реЛрдд рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд "рд╡рд┐рд╕реНрддреГрдд" рд╡рд░реНрдгреЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд╕рд╣реА рд░реВрдкрд╛рдВрддрд░рдг рд╕реНрд░реЛрдд рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЬреАрд╕реАрд╕реА рдХрд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдпреВрдЯреАрдПрдл -8 рдкрд╛рда рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдордирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ -finput-charset рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред MS рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдереЛрдбрд╝реА рдорджрдж рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ - UTF-8 рдореЗрдВ BOM ( рдмрд╛рдЗрдЯ рдСрд░реНрдбрд░ рдорд╛рд░реНрдХ ) рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝реЗрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпреВрдЖрд░рдПрдл -8 рдХреЗ рд╕рд╛рде рдмреЛрд░рд▓реИрдВрдб рд╕реА ++ рдХрдВрдкрд╛рдЗрд▓рд░ рд╕рдВрд╕реНрдХрд░рдг 5.5 рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред

рдЬреЛ рд▓реЛрдЧ рдореБрдЭ рдкрд░ рдкрддреНрдерд░ рдлреЗрдВрдХрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдореИрдВ рджреЛ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рд╕рдордЭрд╛рдКрдВрдЧрд╛: рдкрд╣рд▓рд╛ - рдореЗрд░реЗ рд▓рд┐рдП "рдпреВрдирд┐рдХреЛрдб рд╕реЗ рдмрдЪрдирд╛" рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдХреЛрдб рдкрдврд╝рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИ:

std::wstring wstr(L"\u0410\u0411\u0412\u0413\u0413");





рджреВрд╕рд░рд╛, рдпрд╣ рдХреЗрд╡рд▓ рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рд╕рднреА рд╡рд┐рд╕реНрддреГрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдбрд╛рд▓рдирд╛ рдФрд░ рдХрд┐рд╕реА рддрд░рд╣ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ (рдЬреИрд╕реЗ рдЧреЗрдЯрдЯреЗрдХреНрд╕реНрдЯ) рдПрдХ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред

рдЗрд╕рд▓рд┐рдП рдпрд╣ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - BOM рдХреЗ рд╕рд╛рде UTF-8 рдХреЗ рд╕реНрд░реЛрддред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╡рд┐рдо рд╕реЗрдЯ рдореЗрдВ "рд╕реЗрдЯ рдмрдо" рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЗ BOM рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рдо рд╣реИ, рддреЛ рд╡рд╣ рдХрд╣реАрдВ рднреА рдирд╣реАрдВ рдЬрд╛рдПрдЧрд╛ред



рд╡рд┐рднрд┐рдиреНрди рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг



рдЦреИрд░, рд╣рдо рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рдЧрдПред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдХреЛрдб рд╕рд░рд▓ рдФрд░ рд╕реАрдзрд╛ рд╣реИред рдорд╛рдирдХ рдереНрд░реЗрдбреНрд╕ рдкрд░ рдПрдХ рдЫреЛрдЯрд╛ рдиреЛрдЯ - рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЙрдирдХреЗ рд▓рд┐рдП рдкрд╣рд▓реБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП stdio рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЖрдкрдХреЛ Sync_with_stdio (рдЧрд▓рдд) рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред



 #include <boost/xpressive/xpressive.hpp> #include <locale> #include <fstream> #include <iostream> #include <iterator> #include "codecvt_cp866.hpp" #include "codecvt_cp1251.hpp" #include "unicyr_ctype.hpp" using namespace std; using namespace boost::xpressive; int main() { //    input.txt   cp1251,   // ", !" ofstream ofile("input.txt", std::ios::binary); ostreambuf_iterator<char> writer(ofile); writer = 0xCF; //  ++writer = 0xF0; //  ++writer = 0xE8; //  ++writer = 0xE2; //  ++writer = 0xE5; //  ++writer = 0xF2; //  ++writer = 0x2C; // , ++writer = 0x20; // ++writer = 0xEC; //  ++writer = 0xE8; //  ++writer = 0xF0; //  ++writer = 0x21; // ! ofile.close(); //   wifstream ifile("input.txt"); //    locale cp1251(locale(""), new codecvt_cp1251<wchar_t, char, mbstate_t>); ifile.imbue(cp1251); wchar_t wstr[14]; ifile.getline(wstr, 13); //  C++   cout, cin, cerr  // clog,       stdio,   //        (    //  gcc, msvc 7    ).  //  ios,       stdio. ios_base::sync_with_stdio(false); //    locale cp866(locale(""), new codecvt_cp866<wchar_t, char, mbstate_t>); //  ,      //  wcout.imbue(cp866); //    ctype locale cyrr(locale(""), new unicyr_ctype); wsregex_compiler xpr_compiler; xpr_compiler.imbue(cyrr); wsregex xpr = xpr_compiler.compile(L"", regex_constants::icase); wsmatch match; if(regex_search(wstring(wstr), match, xpr)) wcout << L"icase " << endl; else wcout << L"icase  " << endl; return 0; }
      
      







Cp1251 рд╕реЗ ucs-2 рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдХреЗ рд▓рд┐рдП рд╕рд┐рд░рд┐рд▓рд┐рдХ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП facet codecvt



 #include <locale> #include <map> /**@brief  codecvt      cp1251 *  UCS-2   * *       (3-   - * ).        - * .   ,   codecvt     *  .       *  .  ,      , *  ,     .   *        . State *      ,     *       ,    *       . */ template<class I, class E, class State> class codecvt_cp1251 : public std::codecvt<I, E, State> { public: //     typedef typename std::codecvt_base::result result; const result ok, //  partial, //   (  State) error, //   noconv; //   explicit codecvt_cp1251(size_t r=0) : std::codecvt<I, E, State>(r), ok(std::codecvt_base::ok), partial(std::codecvt_base::partial), error(std::codecvt_base::error), noconv(std::codecvt_base::noconv) { //    -   in_tab[0xA8] = 0x401; out_tab[0x401] = 0xA8; in_tab[0xB8] = 0x451; out_tab[0x451] = 0xB8; // ...   } ~codecvt_cp1251() { } protected: /**@brief        *  from-from_end,     in-in_end.*/ virtual result do_in(State&, const E* from, const E* from_end, const E* &from_next, I* to, I* to_end, I* &to_next) const { while(from != from_end) { if(to == to_end) { from_next = ++from; to_next = to; return partial; } // ASCII if(0 <= *from && *from <= 0x7F) { *to = static_cast<I>(*from); } else if(0xC0 <= static_cast<unsigned char>(*from) && static_cast<unsigned char>(*from) <=0xFF) { *to = static_cast<I>(static_cast<unsigned char>(*from) + 0x350); } else { typename std::map<E, I>::const_iterator s; s = in_tab.lower_bound(*from); if(s == in_tab.end()) { //   ,  from  next   from_next = ++from; to_next = ++to; return error; } *to = s->second; } ++to; ++from; } from_next = from_end; to_next = to; return ok; } /**@brief    ,  true*/ virtual int do_encoding() const throw() { return 1; } /**@brief    ,  true*/ virtual bool do_always_noconv() const throw() { return false; } /*     virtual result do_out(State&, const I* from, const I* from_end, const I* &from_next, E* to, E* to_end, E* &to_next); virtual int do_length(State& s, const E* from, const E* from_end, size_t max) const; virtual int do_max_length() const throw(); */ private: //       std::map<E, I> in_tab; std::map<I, E> out_tab; };
      
      







рдиреЛрдЯ



рдореИрдВрдиреЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЛрдб рдХреЗ рд╕рд╛рде рд▓реЗрдЦ рдХреЛ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ - cp866 рдХреЗ рд▓рд┐рдП рдХреЛрдбреЗрдХрд╡реЗрдЯ рдкрд╣рд▓реВ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдкрд╣рд▓реЗ ctype рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдереА, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЗрди рдкрд╣рд▓реБрдУрдВ рдХреЛ рдЬреАрдердм рдкрд░ рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - git: //github.com/hoxnox/cyrillic- facets.gitред

рдФрд░ рдореИрдВ рд▓рд╛рдЗрди рдирдВрдмрд░реЛрдВ рдХреА рдХрдореА рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдорд╛рдВрдЧрддрд╛ рд╣реВрдВ - рд╡рд┐рд╖рдп рдХреЛ "рдирд┐рдЧрд▓" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпреВрдПрдлрдУ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд╣рд╛рдИрдЯ рдХреЛрдб рдХреЛ рдХрдо рдХрд░рдирд╛ рдерд╛ред



UNICODE рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдпрд╣рд╛рдБ рдкрдврд╝реЗрдВ

рдкрд╣рд▓реБрдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреНрд░реЙрд╕реНрдЯреНрд░реБрдк рдХреА рдкреБрд╕реНрддрдХ "C ++ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд▓реИрдВрдЧреНрд╡реЗрдЬ", рддреАрд╕рд░рд╛ рд╡рд┐рд╢реЗрд╖ рд╕рдВрд╕реНрдХрд░рдг, рдкрд░рд┐рд╢рд┐рд╖реНрдЯ рджреЗрдЦреЗрдВ

рдмрдврд╝рд╛рд╡рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ :: рдпрд╣рд╛рдБ xpressive



UPD 20150813:

рд╕рд╛рдЗрдкрд╛ рд╣реЗрдмреНрд░реБрдмрд▓рд░ рдиреЗ рдПрдХ рдЬрд╛рдВрдЪ рдХреА рдФрд░ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХреЛрдбреЗрдХрд╛рд╡реЗрдЯ рдкрд╣рд▓реВ рдХреЗрд╡рд▓ рдЙрди рдзрд╛рд░рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдмрд┐рд╕рд┐рдХ_рдлрд┐рд▓реНрдмреЛрдл рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдорд╛рдирдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ (рдкреИрд░рд╛рдЧреНрд░рд╛рдл 27.9.1.1, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╕реНрдЯреНрд░реИрд╕рдкреБрдк рджреНрд╡рд╛рд░рд╛ рдиреЛрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ), рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЕрдиреНрдп рдмрдлрд╝рд░реНрд╕ рдХреЗ рд▓рд┐рдП рдХреЛрдбреЗрдХрд╛рд╡реЗрдЯ рдкрд╣рд▓реВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ basic_stringbuf рдореЗрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рдЖрдкрдиреЗ рдЕрдкрдиреЗ codecvt facet рдХреЗ рд╕рд╛рде рдПрдХ рд▓реЛрдХреЗрд▓ рдмрдирд╛рдпрд╛ рд╣реИ рдФрд░ рдЖрд╢рд╛ рд╣реИ рдХрд┐ std :: stringstream рдЬрд┐рд╕реЗ рдпрд╣ рд▓реЛрдХреЗрд▓ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (imbue рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдЗрд╕ рдкрд╣рд▓реВ рдХреЛ рдЦреАрдВрдЪ рд▓реЗрдЧрд╛, рддреЛ рдЖрдк рдЧрд▓рдд рд╣реИрдВред



All Articles