如何检查字符串是否包含空格/制表符/新行(任何空白的行)?

unw*_*guy 6 c++

我知道有一个"isspace"函数可以检查空格,但这需要我遍历字符串中的每个字符,这可能会影响性能,因为这会被称为很多.有没有快速的方法来检查std :: string是否只包含空格?

例如:

function("       ") // returns true
function("    4  ") // returns false
Run Code Online (Sandbox Code Playgroud)

我想到的一个解决方案是使用正则表达式,然后我会知道它只包含空格,如果它是假的......但我不确定这是否比isspace函数更有效.

regex: [\w\W] //checks for any word character(a,b,c..) and non-word character([,],..)
Run Code Online (Sandbox Code Playgroud)

提前致谢!

Yuu*_*shi 8

使用常规字符串,您可以做的最好的形式是:

return string::find_first_not_of("\t\n ") == string::npos;
Run Code Online (Sandbox Code Playgroud)

在最坏的情况下,这将是O(n),但是在不知道关于字符串的情况下,这将是您能做的最好的.


Ern*_*ill 7

必要时,任何方法都需要查看字符串的每个字符.调用isspace()每个字符的循环非常有效.如果isspace()由编译器内联,那么这将是最接近最佳的.

当然,只要看到非空格字符,循环就应该中止.