std :: string.find_first_not_of,意外返回值

0 c++ string find

#include <stdio.h>
#include <string>

int main(void)
{
    printf("%u\n", std::string("\n").find_first_not_of(" \t\n\v\f\r", 0, 1));
}
Run Code Online (Sandbox Code Playgroud)

以下程序打印0,而不是我期望的std :: string :: npos.为什么?

Eri*_*rik 5

您的电话匹配:

size_t find_first_not_of ( const char* s, size_t pos, size_t n ) const;
Run Code Online (Sandbox Code Playgroud)

ns中的字符数,你传递1.所以,你正在寻找第一个不是空格的字符.您的" \t\n\v\f\r"字符串的其余部分将被忽略.

可能你只想要:

find_first_not_of(" \t\n\v\f\r")
Run Code Online (Sandbox Code Playgroud)