📜  C++中的std :: 字符串:: find_first_not_of(1)

📅  最后修改于: 2023-12-03 15:14:03.129000             🧑  作者: Mango

C++中的std::字符串::find_first_not_of

在C++中,std::字符串类(string class)是一个非常常用的类。字符串类提供了一系列函数用于对字符串进行操作。其中,find_first_not_of函数用于查找字符串中第一个不匹配指定字符集合的字符位置。

语法
size_t find_first_not_of(const char* str, size_t pos = 0) const;
size_t find_first_not_of(const std::string& str, size_t pos = 0) const;
size_t find_first_not_of(const char* str, size_t pos, size_t n) const;
size_t find_first_not_of(char c, size_t pos = 0) const;
  • str: 要查找的字符集合,可以是一个字符串,也可以是一个字符数组。
  • pos: 查找的起始位置,默认从0开始。
  • n: 查找的字符数。
返回值

返回值为size_t类型,表示第一个不匹配字符的位置。如果找不到,则返回std::string::npos。

用法举例
实例1:查找字符串中第一个不是空格和制表符的字符
#include <iostream>
#include <string>

int main()
{
    std::string str = "  \t Hello World!  \t  ";
    size_t pos = str.find_first_not_of(" \t"); // 查找第一个不是空格和制表符的字符位置
    if(pos != std::string::npos)
    {
        std::cout << "第一个不是空格和制表符的字符在第" << pos << "个位置:" << str[pos] << std::endl;
    }
    else
    {
        std::cout << "字符串中没有不是空格和制表符的字符" << std::endl;
    }
    return 0;
}

输出结果为:

第一个不是空格和制表符的字符在第4个位置:H
实例2:查找字符串中第一个不是数字和小数点的字符
#include <iostream>
#include <string>

int main()
{
    std::string str = "1234.56";
    size_t pos = str.find_first_not_of("0123456789."); // 查找第一个不是数字和小数点的字符位置
    if(pos != std::string::npos)
    {
        std::cout << "第一个不是数字和小数点的字符在第" << pos << "个位置:" << str[pos] << std::endl;
    }
    else
    {
        std::cout << "字符串中没有不是数字和小数点的字符" << std::endl;
    }
    return 0;
}

输出结果为:

字符串中没有不是数字和小数点的字符
注意事项

find_first_not_of函数返回的位置是从0开始计数的,即字符串中第一个字符的位置为0。

字符串中使用的字符集合是由参数传入的字符串或字符数组决定的。如果没有参数传入,则默认不查找任何字符。

如果要查找除某些字符以外的所有字符,可以使用find_first_of函数的反向版本——find_first_not_of函数。