我注意到C++ 11中增加了std::isblank(在<locale>中)和std::isblank(在<cctype>中)。我发现这个page表示Returns true if c is a blank character; that is, a space or a tab.(对于“C”语言环境),因此空白字符可能是空白字符的子集,但是由于我们有std::isspace,所以我不明白区别的原因。为什么将std::isblank添加到标准库中?

更新
根据here的说法,似乎POSIX规范是第一个引入“空白”字符类的规范,然后C和C++标准也紧随其后。

最佳答案



绝对是一个子集。 C99 7.4.1.3/2说,“一个标准的空白字符或是一个
isspace为真的特定于语言环境的字符集”。

它延续了我认为的动机:“而习惯于
在一行文字中分隔单词”。

对于某些未用于分隔一行文本中的单词的字符,isspace返回true。主要是换行符。

显然,这是指isspace中的isblank<cctype>,而不是您所要求的<locale>中的那个,但我认为这没有什么区别。我认为该标准并没有真正使它明确,但是两者都引用了相同的“字符类型”列表。

10-08 07:41