我知道isspace()
适用于ASCII,但是我有UTF-8文本。如果isspace()
仅查看低7位(UTF-8和ASCII重叠),则应该安全使用。
可以安全使用,是指它不会将非空白的Unicode字符检测为空白。我知道可能存在无法检测到的特殊Unicode空格,但这对我来说不是问题。
即只要没有肯定的判断,我可以接受错误的否定判断。假设是正确的吗?
最佳答案
isspace()
在运行时受空格字符的区域设置定义的约束。
在C语言中,空格字符由对setlocale(LC_ALL)
或setlocale(LC_CTYPE)
的调用中指定的语言环境定义。
在C++中,空格字符由以下任一指定的语言环境定义:
std::setlocale(LC_ALL)
header 中的std::setlocale(LC_CTYPE)
版本时,对std::isspace()
或<cctype>
的调用。 locale
header 中的std::isspace()
版本时,输入<locale>
参数。 使用的默认语言环境是
"C"
语言环境,它定义以下空白字符,这些空格字符在UTF-8和ASCII中相同,并且大多数语言环境与ASCII兼容,但在其他语言环境中可能有所不同:''(0x20)空间(SPC)
'\ t'(0x09)水平制表符(TAB)
'\ n'(0x0a)换行符(LF)
'\ v'(0x0b)垂直制表符(VT)
'\ f'(0x0c)提要(FF)
'\ r'(0x0d)回车(CR)
关于c++ - isspace()是否可以使用UTF-8文本给出误报?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38028343/