1.C++ string中的find()函数
一直都对c++的find函数不太明白,做了此题以后,理解的更透彻了。
最初,我只理解这种形式:
char stl[] ="http://c.biancheng.net/stl/";
//调用 find() 查找第一个字符 'c'
char * p = find(stl, stl + strlen(stl), 'c');
//判断是否查找成功
if (p != stl + strlen(stl)) {
cout << p << endl;
}
即,给出始末位置和要找的符号,find()会返回出符号所在位置的地址(第一个出现的)。
这里有个神奇的地方:
cout<<*p; cout<<p;
分别输出:c.biancheng.net/stl/和c。
或者:
//find() 函数作用于容器
std::vector<int> myvector{ 10,20,30,40,50 };
std::vector<int>::iterator it;
it = find(myvector.begin(), myvector.end(), 30);
if (it != myvector.end())
cout << "查找成功:" << *it;
else
cout << "查找失败";
return 0;
找不到的话,迭代器it会指向vector的end()地址。
但是string:
不能用迭代器it来保存。
详情请看这位大佬:
https://www.cnblogs.com/wkfvawl/p/9429128.html
2.ctype.h标准库
AC代码:
#include<iostream>
#include <string>
using namespace std;
int main() {
string s1, s2, s3="";
cin >> s1 >> s2;
for (auto a : s1) {
if (s2.find(a) == string::npos && s3.find(toupper(a)) == string::npos)
{
s3 += toupper(a);
}
}
cout << s3;
return 0;
}