find_first_of:
????????在字符串中查找给定字符集合中任一字符首次出现的位置。若查找数字字符,则“给定字符集合”应包含所有10个数字;若查找字母,则要包含所有大小写字母——abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOQRSTUVWXYZ。
代码示例:
#include<iostream>
#include<string>
using namespace std;
void find_char(string &s,const string &chars){
cout<<"在"<<s<<"中查找"<<chars<<"中字符"<<endl;
string::size_type pos = 0;
while((pos=s.find_first_of(chars,pos))!=string::npos) {
cout<<"pos:"<<pos<<", char:"<<s[pos]<<endl;
pos++;
}
}
int main(){
string s = "ab2c3d7r4e6";
cout<<"查找所有数字"<<endl;
find_char(s,"0123456789");
cout<<endl<<"查找所有字母"<<endl;
find_char(s,"abcdefghijklmnopqrstuvwxyz"\
"ABCDEFGHIGKLMNOPQRSTUVWXYZ");
return 0;
}
运行结果:
查找所有数字
在ab2c3d7r4e6中查找0123456789中字符
pos:2, char:2
pos:4, char:3
pos:6, char:7
pos:8, char:4
pos:10, char:6
查找所有字母
在ab2c3d7r4e6中查找abcdefghijklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ中字符
pos:0, char:a
pos:1, char:b
pos:3, char:c
pos:5, char:d
pos:7, char:r
pos:9, char:e
请按任意键继续. . .
find_first_not_of:
????????find first_not_of 查找第一个不在给定字符集合中出现的字符,若用它查找某类字符首次出现的位置,则应使用补集。若查找数字字符,则“给定字符集合”应包含10 个数字之外的所有字符——abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVwXYZ;若查找字母,则要包含所有非字母字符。注意,这一设定仅对此问题要查找的字符串有效——它只包含字母和数字。因此,字母和数字互为补集。若字符串包含任意ASCII字符,可以想见,正确的“补集”可能非常冗长。
代码示例:
#include<iostream>
#include<string>
using namespace std;
void find_no_char(string &s,const string &chars){
cout<<"在"<<s<<"中查找不在"<<chars<<"中字符"<<endl;
string::size_type pos = 0;
while((pos=s.find_first_not_of(chars,pos))!=string::npos) {
cout<<"pos:"<<pos<<", char:"<<s[pos]<<endl;
pos++;
}
}
int main(){
string s = "ab2c3d7r4e6";
cout<<"查找所有数字"<<endl;
find_no_char(s,"abcdefghijklmnopqrstuvwxyz"\
"ABCDEFGHIGKLMNOPQRSTUVWXYZ");
cout<<endl<<"查找所有字母"<<endl;
find_no_char(s,"0123456789");
return 0;
}
运行结果:
查找所有数字
在ab2c3d7r4e6中查找不在abcdefghijklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ中字符
pos:2, char:2
pos:4, char:3
pos:6, char:7
pos:8, char:4
pos:10, char:6
查找所有字母
在ab2c3d7r4e6中查找不在0123456789中字符
pos:0, char:a
pos:1, char:b
pos:3, char:c
pos:5, char:d
pos:7, char:r
pos:9, char:e
请按任意键继续. . .
|