我注意到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>
中的那个,但我认为这没有什么区别。我认为该标准并没有真正使它明确,但是两者都引用了相同的“字符类型”列表。