我注意到在C++ 11中添加了std :: isblank(in <locale>)和std :: isblank(in <cctype>).我发现这个网页它说Returns true if c is a blank character; that is, a space or a tab.(为"C"语言环境),所以可能是一个空白字符是一个空白字符的一个子集,但我不明白的区别的原因,因为我们有std::isspace.为什么被std::isblank添加到标准库中?
更新 根据这里,看起来POSIX规范是第一个引入"空白"字符类,然后C和C++标准紧随其后.
Ste*_*sop 10
可能空白字符是空白字符的子集
绝对是一个子集.C99 7.4.1.3/2说,"标准空白字符或者是一个特定于语言环境的字符集,其中的空格是真实的".
它继续我认为的动机:"这用于分隔文本行中的单词".
isspace对于某些不用于分隔文本行中的单词的字符,返回true .主要是,航线.
显然,这指的是isspace和isblank中<cctype>,没有一个在<locale>你问过,但我不认为这有什么差别.我不认为标准真正使它明确,但两者引用相同的"字符类型"列表.
两者都是区域设置感知 - 区别在于每个区域设置的规则,这将是一个太大的列表,无法在此枚举(假设有一个详尽的列表开始).
特别感兴趣的是默认的C语言环境,其行为如下:
isspace返回true空格,换页,换行,回车,水平制表符和垂直制表符.isblanktrue仅返回空格和水平制表符.| 归档时间: |
|
| 查看次数: |
1998 次 |
| 最近记录: |