本地化库
本地环境设施包含字符分类和字符串校对、数值、货币及日期/时间格式化和分析,以及消息取得的国际化支持。本地环境设置控制流 I/O 、正则表达式库和 C++ 标准库的其他组件的行为。
检查字符是否被本地环境分类为空白
std::isspace(std::locale)
template< class charT > |
检查给定字符是否为给定 locale 的 ctype 平面分类为空白字符。
参数
ch | - | 字符 |
loc | - | 本地环境 |
返回值
若字符被分类为空白字符则返回 true ,否则返回 false
可能的实现
template< class charT >
bool isspace( charT ch, const std::locale& loc ) {return std::use_facet<std::ctype<charT>>(loc).is(std::ctype_base::space, ch);
}
调用示例
#include <iostream>
#include <locale>void try_with(wchar_t c, const char* locale)
{std::cout << "isspace('"<< c<< "', locale(\""<< locale<< "\")) returned "<< std::boolalpha<< std::isspace(c, std::locale(locale))<< std::endl;
}int main()
{//检查给定的字符在当前的 C 本地环境中是否是空白字符。//空格 (0x20, ' ')//换页(0x0c, '\f')//换行(0x0a, '\n')//回车(0x0d, '\r')//水平制表符(0x09, '\t')//垂直制表符(0x0b, '\v')std::cout << std::boolalpha;std::locale locale1; // locale1 是经典 "C" 本地环境的副本std::cout << "locale1.name(): " << locale1.name() << std::endl;std::locale locale2("Chinese (Simplified)_China.936"); // locale2 为本地环境std::cout << "locale2.name(): " << locale2.name() << std::endl;const wchar_t EM_SPACE = ' '; // Unicode 字符 'EM SPACE'try_with(EM_SPACE, locale1.name().c_str());try_with(EM_SPACE, locale2.name().c_str());const wchar_t EM_SPACE2 = 'A'; // Unicode 字符 'EM SPACE'try_with(EM_SPACE2, locale1.name().c_str());try_with(EM_SPACE2, locale2.name().c_str());return 0;
}
输出
locale1.name(): C
locale2.name(): Chinese (Simplified)_China.936
isspace('32', locale("C")) returned true
isspace('32', locale("Chinese (Simplified)_China.936")) returned true
isspace('65', locale("C")) returned false
isspace('65', locale("Chinese (Simplified)_China.936")) returned false