首页 > 其他分享 >locale对std::regex是有影响的

locale对std::regex是有影响的

时间:2022-12-07 21:55:30浏览次数:31  
标签:std regex cout setlocale locale bad

//从我的新浪博客搬过来

C++11 regex对locale是有依赖的。

如果使用的中文的话,很容易抛出bad_alloc异常!

 默认情况是 locale是C,以下正则正常

   const std::regex r1("^(\\s+)?(.*?)(\\s+)?=(\\s+)?(.*?)(\\s+)?");
   std::cout << "std::regex r1: OK" << std::endl;

 

但改在中文语言就抛出bad_alloc异常了: 

    char* pLocale = setlocale(LC_ALL, "chs"); //bad
   //char* pLocale = setlocale(LC_ALL, "C");   //good
   std::cout << "setlocale(): " << pLocale << std::endl;

   const std::regex r1("^(\\s+)?(.*?)(\\s+)?=(\\s+)?(.*?)(\\s+)?");
   std::cout << "std::regex r1: OK" << std::endl;

 

标签:std,regex,cout,setlocale,locale,bad
From: https://www.cnblogs.com/wsk3q/p/16964672.html

相关文章