📅  最后修改于: 2023-12-03 15:14:03.129000             🧑  作者: Mango
在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;
返回值为size_t类型,表示第一个不匹配字符的位置。如果找不到,则返回std::string::npos。
#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
#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函数。