рднрд╛рд╖рд╛рдИ рдФрд░ рд╕рд╛рдВрд╕реНрдХреГрддрд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓рдирд╛

рдЬрд▓реНрджреА рдпрд╛ рдмрд╛рдж рдореЗрдВ, рд╣рд░ рдХрд┐рд╕реА рдХреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрддреЗ рд╕рдордп рднрд╛рд╖рд╛рдИ рдФрд░ рд╕рд╛рдВрд╕реНрдХреГрддрд┐рдХ рд╡рд┐рд╡рд┐рдзрддрд╛ рд╕реЗ рдЬреБрдбрд╝реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдореБрдЭреЗ рдпрд╣ рдЬрд╛рдирдХрд░ рдмрд╣реБрдд рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ рдХрд┐ рдореЗрд░реЗ рдХреБрдЫ рдорд┐рддреНрд░ рдЬреЛ C ++ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЕрдкрдиреА рдмрд╛рдЗрдХ рд╕реЗ рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВред рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЕрднреА рднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ std :: locale рдХреНрдпрд╛ рд╣реИ, рдореИрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ рдФрд░ рдЕрдЧрд░ рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ ...



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



рд╣рдХреАрдХрдд рдореЗрдВ, рд╣рдо рд▓рдЧрд╛рддрд╛рд░ рдмрд┐рдирд╛ рд╢рдХ рдХреЗ рднреА рдкрд╣рд▓реБрдУрдВ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рд╣реИрдВред рдорд╛рдирдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдмрдврд╝рд╛рд╡рд╛ :: рдЪрд░рд┐рддреНрд░ рдорд╛рдорд▓реЗ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП regex, рдЖрджрд┐ред рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред * Nix рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ "ru_RU: UTF-8", "en_US.UTF-8" рдЬреИрд╕реА рдкрдВрдХреНрддрд┐рдпреЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ - рдпреЗ рдордВрдЪ рдореЗрдВ рд╕реНрдерд╛рдиреАрдпрдХрд░рдгреЛрдВ рдХреЗ рдирд╛рдо рд╣реИрдВред рдХрд╛рд░реНрдпрдХреНрд░рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ "рдХреНрд▓рд╛рд╕рд┐рдХ" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



рдкрд╣рд▓реВ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдФрд░ рдУрд╡рд░рд░рд╛рдЗрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг



рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдорд╛рдирдХ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдкрд╣рд▓реВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рддрдХрдиреАрдХ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдЖрдорддреМрд░ рдкрд░ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рди рдХрд┐ рдпрд╣ рдЬрд╛рдирдирд╛ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИред рдЖрдЗрдП рд▓реЛрдХрдкреНрд░рд┐рдп рдмрдврд╝рд╛рд╡рд╛ рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ: xpressive рдкреБрд╕реНрддрдХрд╛рд▓рдп (рдЖрдк рднреА рдмрдврд╝рд╛рд╡рд╛ :: regex рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬреЛ рд▓реЛрдЧ рдкрд╣рд▓реА рдмрд╛рд░ xpressive рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдпрд╣ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛):



  1. #include <boost/xpressive/xpressive.hpp> #include <iostream> using namespace std ; using namespace boost :: xpressive ; int main ( int argc, char * argv [ ] ) { sregex xpr = sregex :: compile ( "" , regex_constants :: icase ) ; smatch match ; string str ( " !" ) ; if ( regex_search ( str, match, xpr ) ) cout << "icase ok" << endl ; else cout << "icase fail" << endl ; return 0 ; }



  2. #include <boost/xpressive/xpressive.hpp> #include <iostream> using namespace std ; using namespace boost :: xpressive ; int main ( int argc, char * argv [ ] ) { sregex xpr = sregex :: compile ( "" , regex_constants :: icase ) ; smatch match ; string str ( " !" ) ; if ( regex_search ( str, match, xpr ) ) cout << "icase ok" << endl ; else cout << "icase fail" << endl ; return 0 ; }



  3. #include <boost/xpressive/xpressive.hpp> #include <iostream> using namespace std ; using namespace boost :: xpressive ; int main ( int argc, char * argv [ ] ) { sregex xpr = sregex :: compile ( "" , regex_constants :: icase ) ; smatch match ; string str ( " !" ) ; if ( regex_search ( str, match, xpr ) ) cout << "icase ok" << endl ; else cout << "icase fail" << endl ; return 0 ; }



  4. #include <boost/xpressive/xpressive.hpp> #include <iostream> using namespace std ; using namespace boost :: xpressive ; int main ( int argc, char * argv [ ] ) { sregex xpr = sregex :: compile ( "" , regex_constants :: icase ) ; smatch match ; string str ( " !" ) ; if ( regex_search ( str, match, xpr ) ) cout << "icase ok" << endl ; else cout << "icase fail" << endl ; return 0 ; }



  5. #include <boost/xpressive/xpressive.hpp> #include <iostream> using namespace std ; using namespace boost :: xpressive ; int main ( int argc, char * argv [ ] ) { sregex xpr = sregex :: compile ( "" , regex_constants :: icase ) ; smatch match ; string str ( " !" ) ; if ( regex_search ( str, match, xpr ) ) cout << "icase ok" << endl ; else cout << "icase fail" << endl ; return 0 ; }



  6. #include <boost/xpressive/xpressive.hpp> #include <iostream> using namespace std ; using namespace boost :: xpressive ; int main ( int argc, char * argv [ ] ) { sregex xpr = sregex :: compile ( "" , regex_constants :: icase ) ; smatch match ; string str ( " !" ) ; if ( regex_search ( str, match, xpr ) ) cout << "icase ok" << endl ; else cout << "icase fail" << endl ; return 0 ; }



  7. #include <boost/xpressive/xpressive.hpp> #include <iostream> using namespace std ; using namespace boost :: xpressive ; int main ( int argc, char * argv [ ] ) { sregex xpr = sregex :: compile ( "" , regex_constants :: icase ) ; smatch match ; string str ( " !" ) ; if ( regex_search ( str, match, xpr ) ) cout << "icase ok" << endl ; else cout << "icase fail" << endl ; return 0 ; }



  8. #include <boost/xpressive/xpressive.hpp> #include <iostream> using namespace std ; using namespace boost :: xpressive ; int main ( int argc, char * argv [ ] ) { sregex xpr = sregex :: compile ( "" , regex_constants :: icase ) ; smatch match ; string str ( " !" ) ; if ( regex_search ( str, match, xpr ) ) cout << "icase ok" << endl ; else cout << "icase fail" << endl ; return 0 ; }



  9. #include <boost/xpressive/xpressive.hpp> #include <iostream> using namespace std ; using namespace boost :: xpressive ; int main ( int argc, char * argv [ ] ) { sregex xpr = sregex :: compile ( "" , regex_constants :: icase ) ; smatch match ; string str ( " !" ) ; if ( regex_search ( str, match, xpr ) ) cout << "icase ok" << endl ; else cout << "icase fail" << endl ; return 0 ; }



  10. #include <boost/xpressive/xpressive.hpp> #include <iostream> using namespace std ; using namespace boost :: xpressive ; int main ( int argc, char * argv [ ] ) { sregex xpr = sregex :: compile ( "" , regex_constants :: icase ) ; smatch match ; string str ( " !" ) ; if ( regex_search ( str, match, xpr ) ) cout << "icase ok" << endl ; else cout << "icase fail" << endl ; return 0 ; }



  11. #include <boost/xpressive/xpressive.hpp> #include <iostream> using namespace std ; using namespace boost :: xpressive ; int main ( int argc, char * argv [ ] ) { sregex xpr = sregex :: compile ( "" , regex_constants :: icase ) ; smatch match ; string str ( " !" ) ; if ( regex_search ( str, match, xpr ) ) cout << "icase ok" << endl ; else cout << "icase fail" << endl ; return 0 ; }



  12. #include <boost/xpressive/xpressive.hpp> #include <iostream> using namespace std ; using namespace boost :: xpressive ; int main ( int argc, char * argv [ ] ) { sregex xpr = sregex :: compile ( "" , regex_constants :: icase ) ; smatch match ; string str ( " !" ) ; if ( regex_search ( str, match, xpr ) ) cout << "icase ok" << endl ; else cout << "icase fail" << endl ; return 0 ; }



  13. #include <boost/xpressive/xpressive.hpp> #include <iostream> using namespace std ; using namespace boost :: xpressive ; int main ( int argc, char * argv [ ] ) { sregex xpr = sregex :: compile ( "" , regex_constants :: icase ) ; smatch match ; string str ( " !" ) ; if ( regex_search ( str, match, xpr ) ) cout << "icase ok" << endl ; else cout << "icase fail" << endl ; return 0 ; }



  14. #include <boost/xpressive/xpressive.hpp> #include <iostream> using namespace std ; using namespace boost :: xpressive ; int main ( int argc, char * argv [ ] ) { sregex xpr = sregex :: compile ( "" , regex_constants :: icase ) ; smatch match ; string str ( " !" ) ; if ( regex_search ( str, match, xpr ) ) cout << "icase ok" << endl ; else cout << "icase fail" << endl ; return 0 ; }



  15. #include <boost/xpressive/xpressive.hpp> #include <iostream> using namespace std ; using namespace boost :: xpressive ; int main ( int argc, char * argv [ ] ) { sregex xpr = sregex :: compile ( "" , regex_constants :: icase ) ; smatch match ; string str ( " !" ) ; if ( regex_search ( str, match, xpr ) ) cout << "icase ok" << endl ; else cout << "icase fail" << endl ; return 0 ; }







рдпрд╣ рдХреБрдЫ рдХреЛ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдХрд░реЗрдЧрд╛ рдХрд┐ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рд╡рд┐рддрд░рдг рдЕрддреНрдпрдзрд┐рдХ рдордВрдЪ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдордВрдЪ рдкрд░, рдХрд╛рд░реНрдпрдХреНрд░рдо рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╕рдм рд▓реЛрдХреЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдпрджрд┐ рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╡рд┐рдВрдбреЛрдЬрд╝ -1251 рд╣реИ, рддреЛ "рдЖрдЗрдХрд╕ рдлреЗрд▓" рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдПрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЛрдХреЗрд▓ рдХреЛ cp1251 рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдордВрдЪ рдХрд╛ рд╕рдмрд╕реЗ рдЖрдо рдЙрджрд╛рд╣рд░рдг mingw рд╣реИ (рдПрдХ рд╕реНрд░реЛрдд рдмрд╛рдЗрдирд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) + рд╡рд┐рдВрдбреЛрдЬред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмрдврд╝рд╛рд╡рд╛ :: xpressive рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдмрд╕ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ cp-1251 рдХреЛрдб рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдХреМрди рд╕реЗ рдЕрдХреНрд╖рд░ рд╣реИрдВред рдФрд░ рд╢рд╛рд╕реНрддреНрд░реАрдп рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХрд╛ ctype facet рдЗрд╕рдХреЗ рд▓рд┐рдП рджреЛрд╖реА рд╣реИред Xpressive рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЗ рд╕рд╣реА ctype рдкрд╣рд▓реВ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдХреЗ, рд╣рдо рд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред рд╕рд░рд▓рддрдо рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрджрд┐ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдЗрд╕реЗ рд╡реИрд╢реНрд╡рд┐рдХ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ



  1. // рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рд╕реЗрдЯ рдХрд░реЗрдВ
  2. std :: locale cp1251_locale ( "ru_RU.CP1251" ) ;
  3. std :: locale :: Global ( cp1251_locale ) ;


рдпрд╛ рдЗрд╕реЗ рд░реЗрдЧреЗрдХреНрд╕ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдВ

  1. std :: locale cp1251_locale ( "ru_RU.CP1251" ) ;
  2. sregex_compiler рд╕рдВрдХрд▓рдХ ;
  3. // рд░реЗрдЧреЗрдХреНрд╕ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдмрддрд╛рдПрдВ рдХрд┐ рдХрд┐рд╕ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ
  4. рд╕рдВрдХрд▓рдХред imbue ( cp1251_locale ) ;
  5. sregex xpr = рд╕рдВрдХрд▓рдХред рд╕рдВрдХрд▓рди ( "рджреБрдирд┐рдпрд╛" , regex_constants :: icase ) ;




рд╕рдмрдХреБрдЫ рдареАрдХ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдПрдХ рдРрд╕реЗ рдордВрдЪ рдкрд░ рдЬрд╣рд╛рдВ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг ru_RU рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ: CP1251 рд╣рдорд╛рд░рд╛ рдХреЛрдб рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджреЗрдЧрд╛ред рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдирд╛рдо рдЧрд▓рдд рд░реВрдк рд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рдореЗрдВ - рдЖрд╡рд╢реНрдпрдХ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдирд╣реАрдВ рд╣реИред рд╣рдо рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ ctype facet рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░реЗрдВрдЧреЗ (рдпрд╣ рд╡рд╣ рд╣реИ рдЬреЛ xpressive рдХреЛ рд╕рдордЭрд╛рдПрдЧрд╛ рдХрд┐ рдХреМрди рд╕реЗ рдЕрдХреНрд╖рд░ рдЕрдХреНрд╖рд░ рд╣реИрдВ рдФрд░ рдорд╛рдорд▓рд╛ рдХреИрд╕реЗ рдмрджрд▓ рд░рд╣рд╛ рд╣реИ)ред



CP1251 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП ctype facet рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг:



  1. #include <рдмрдврд╝рд╛рд╡рд╛ / xpressive / xpressive.hpp>
  2. # рдХрд┐рдВрдХрд░реНрддрд╡реНрдпрд╡рд┐рдореВрдврд╝ <iostream>
  3. рдирд╛рдо рд╕реНрдерд╛рди std рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ ;
  4. рдирд╛рдо рд╕реНрдерд╛рди рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ :: xpressive ;
  5. / ** @ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ctype рдкрд╣рд▓реВ рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг
  6. * рдПрдиреНрдХреЛрдбреЗрдб Cp1251 * /
  7. рд╡рд░реНрдЧ ctype_cp1251 : рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ ctype < char >
  8. {
  9. рдЬрдирддрд╛ :
  10. ctype_base рдореЗрдВ / ** @ breif рдорд╛рд╕реНрдХ рд╕рднреА рд╕рдВрднрд╡ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдПрдХ рдЧрдгрди рд╣реИ
  11. * рд╡рд░реНрдг - рдЕрд▓реНрдлрд╛, рдЕрдВрдХ, ... * /
  12. typedef рдЯрд╛рдЗрдкрдиреЗрдо ctype < char > :: ctype_base :: рдорд╛рд╕реНрдХ рдорд╛рд╕реНрдХ ;
  13. // рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЗ рд▓рд┐рдП, рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ
  14. рдПрдирдо {
  15. рдЕрд▓реНрдлрд╛ = ctype < char > :: рдЕрд▓реНрдлрд╛ ,
  16. рдирд┐рдЪрд▓рд╛ = ctype < char > :: рдирд┐рдЪрд▓рд╛ ,
  17. punct = ctype < char > :: punct
  18. // рдЕрдиреНрдп рдорд╛рд╕реНрдХ
  19. } ;
  20. / ** @ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдореБрдЦреНрдп рдирд┐рд░реНрдорд╛рддрд╛ред r - рдЬреАрд╡рди рдХреЗ рдХреНрд╖реЗрддреНрд░ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ
  21. * рдкрд╣рд▓реВред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░реИрд╕рдкреБрдк рджреНрд╡рд╛рд░рд╛ рдкреБрд╕реНрддрдХ рджреЗрдЦреЗрдВред * /
  22. ctype_cp1251 ( size_t r = 0 )
  23. {
  24. // рдорд╛рд╕реНрдХ рдЯреЗрдмрд▓ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВред рд╕реВрдЪрдХрд╛рдВрдХ рдЪрд╛рд░ рдХрд╛ рдирдХрд╛рд░рд╛рддреНрдордХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред
  25. // рдЕрд░реНрдерд╛рдд, ext_tab [1] рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдореБрдЦреМрдЯрд╛ рд╣реИ (-1) - 'i'
  26. ext_tab [ 0 ] = 0 ;
  27. for ( size_t i = 1 ; i <= 32 ; ++ i )
  28. ext_tab [ i ] = рдЕрд▓реНрдлрд╛ | рдХрдо ;
  29. for ( size_t i = 33 ; рдореИрдВ <= 64 ; ++ i )
  30. ext_tab [ i ] = рдЕрд▓реНрдлрд╛ | рдКрдкрд░реА ;
  31. // ... рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЕрдиреНрдп рд╡рд░реНрдг рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИрдВ
  32. for ( size_t i = 65 ; рдореИрдВ <= 128 ; ++ i )
  33. ext_tab [ i ] = punct ;
  34. }
  35. ~ ctype_cp1251 ( )
  36. { }
  37. рд╕рдВрд░рдХреНрд╖рд┐рдд :
  38. / ** @ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЪрд░рд┐рддреНрд░ c, m * / рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ
  39. рд╡рд░реНрдЪреБрдЕрд▓ рдмреВрд▓ рд╣реИ ( рдорд╛рд╕реНрдХ рдПрдо, рдЪрд╛рд░ рд╕реА ) рдХрд╛рд╕реНрдЯ
  40. {
  41. рдЕрдЧрд░ ( 0 <= c && c <= 127 )
  42. рд╡рд╛рдкрд╕реА ctype < char > :: is ( m, c ) ;
  43. рдФрд░ рдпрджрд┐ ( - 128 <= c && c < 0 )
  44. рд╡рд╛рдкрд╕реА ext_tab [ static_cast < size_t > ( c * - 1 ) ] & m ;
  45. }
  46. / ** @ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдзрд░реНрдорд╛рдиреНрддрд░рд┐рдд рдЧ
  47. рд╡рд░реНрдЪреБрдЕрд▓ рдЪрд╛рд░ do_toupper ( рдЪрд╛рд░ рд╕реА ) рдХрд╛рд╕реНрдЯ
  48. {
  49. рдЕрдЧрд░ ( 0 <= c && c <= 127 )
  50. рд╡рд╛рдкрд╕реА ctype < char > :: do_toupper ( c ) ;
  51. рдФрд░ рдпрджрд┐ ( ( рдХрдо рд╣реИ, рдЧ ) )
  52. рд╡рд╛рдкрд╕реА c - 32 ;
  53. рд╡рд╛рдкрд╕реА c ;
  54. }
  55. / ** @ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЪрд░рд┐рддреНрд░ рдХреЛ c рдХреЛ рдиреАрдЪреЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ * /
  56. рд╡рд░реНрдЪреБрдЕрд▓ рдЪрд╛рд░ do_tolower ( рдЪрд╛рд░ рд╕реА ) рдХрд╛рд╕реНрдЯ
  57. {
  58. рдЕрдЧрд░ ( 0 <= c && c <= 127 )
  59. рд╡рд╛рдкрд╕реА ctype < char > :: do_tolower ( c ) ;
  60. рдФрд░ рдпрджрд┐ ( ( рдКрдкрд░реА, рд╕реА ) )
  61. рд╡рд╛рдкрд╕реА c + 32 ;
  62. рд╡рд╛рдкрд╕реА c ;
  63. }
  64. // рдЗрд╕рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдмрд╛рдХреА рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ
  65. // рдЖрднрд╛рд╕реА рдХрд╛рд░реНрдп
  66. рдирд┐рдЬреА :
  67. // рдирдХрд▓ рдкрд░ рд░реЛрдХ
  68. ctype_cp1251 ( const ctype_cp1251 & ) ;
  69. const ctype_cp1251 рдФрд░ рдСрдкрд░реЗрдЯрд░ = ( const ctype_cp1251 & ) ;
  70. рдорд╛рд╕реНрдХ ext_tab [ 129 ] ; // @ <рдХреЛрдб рддрд╛рд▓рд┐рдХрд╛ CP1251 рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рднрд╛рдЧ рдХреЗ рдореБрдЦреМрдЯреЗ
  71. } ;
  72. int main ( int argc, char * argv [ ] )
  73. {
  74. // рдкрд╣рд▓реВ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдПрдБ
  75. ctype < char > * ctype_cp1251_facet = new ctype_cp1251 ( ) ;
  76. // рд╡рд░реНрддрдорд╛рди рдПрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдирдпрд╛ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдмрдирд╛рдПрдВ, рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
  77. // рдореБрдЦрд░ рдкрд░рд┐рднрд╛рд╖рд┐рддред рд╡реИрд╢реНрд╡рд┐рдХ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
  78. // рд╡рд░реНрдгрд┐рдд рдкрд╣рд▓реВ рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдиреАрдпрдХрд░рдг, рдлрд┐рд░ рд╕рднреА рд╡рд░реНрдЧ рдФрд░
  79. // рдлрд╝рдВрдХреНрд╢рди, рд╡реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
  80. рд▓реЛрдХреЗрд▓ cp1251_locale ( рд▓реЛрдХреЗрд▓ ( "" ) , ctype_cp1251_facet ) ;
  81. // рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рд░реЗрдЧреЗрдХреНрд╕ рдХрдВрдкрд╛рдЗрд▓рд░ рдмрдирд╛рдПрдВ
  82. sregex_compiler рд╕рдВрдХрд▓рдХ ;
  83. рд╕рдВрдХрд▓рдХред imbue ( cp1251_locale ) ;
  84. sregex xpr = рд╕рдВрдХрд▓рдХред рд╕рдВрдХрд▓рди ( "рджреБрдирд┐рдпрд╛" , regex_constants :: icase ) ;
  85. рд╕реНрдореИрд╢ рдореИрдЪ ;
  86. рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реНрдЯреНрд░ ( "рд╣реЗрд▓реЛ рдкреЗрд╕рд┐рдХ!" ) ;
  87. рдЕрдЧрд░ ( regex_search ( str, match, xpr ) )
  88. cout << "icase ok" << endl ;
  89. рдЕрдиреНрдпрдерд╛
  90. cout << "icase fail" << endl ;
  91. рд╡рд╛рдкрд╕реА 0 ;
  92. }




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



рдПрд╕рдЯреАрдбреА рдХрд╛ рдкреВрд░рд╛ рд╡рд┐рд╡рд░рдг :: рд╕реНрдерд╛рдиреАрдп рд╡рд░реНрдЧ рдФрд░ рдкрд╣рд▓реВ рдЙрдкрдпреЛрдЧ рддрдХрдиреАрдХреЛрдВ рдХреЛ рдмреНрдпреЛрд░реНрди рд╕реНрдЯреНрд░реЙрдиреНрдЧрдЕрдк рдХреА рдкреБрд╕реНрддрдХ "рд╕реА ++ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд▓реИрдВрдЧреНрд╡реЗрдЬ" рдХреЗ рддреАрд╕рд░реЗ рд╡рд┐рд╢реЗрд╖ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдкрд░рд┐рд╢рд┐рд╖реНрдЯ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рдореБрдЦреНтАНрдп рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕реНтАНрдкрд╖реНтАНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдПрд╕рдЯреАрдПрд▓ рдореИрдиреБрдЕрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдБ ред



рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рдХреЛрдбреЗрдХрд╛рд╡реЗрдЯ рдкрд╣рд▓реВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдЧрд░ рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рддреЛ рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ред



______________________

рдкрд╛рда рдХреЛ Blog Editor рдореЗрдВ ┬й SoftCoder.ru рджреНрд╡рд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ



All Articles