string
- 迭代器
- find
- swap
- substr
- rfind
- find_first_of(用的很少)
- find_last_of(用的很少)
- find_first_not_of(用的很少)
迭代器
int main()
{//正向迭代器string s1("hello world!");string::iterator it = s1.begin();;while (it != s1.end()){cout << *it << ' ';++it;}cout << endl;//反向迭代器string::reverse_iterator reit = s1.rbegin();while (reit != s1.rend()){cout << *reit << ' ';++reit;}cout << endl;//正向const迭代器string::const_iterator cit = s1.begin();//修饰的是*citwhile (cit != s1.end()){cout << *cit << ' ';++cit;}cout << endl;//反向const迭代器auto rcit = s1.rbegin();while (rcit != s1.rend()){cout << *rcit << ' ';++rcit;}cout << endl;return 0;
}
任何容器都可以使用迭代器去访问。树形结构,linux结构等。
find
int main ()
{std::string str ("There are two needles in this haystack with needles.");std::string str2 ("needle");std::size_t found = str.find(str2);if (found!=std::string::npos)std::cout << "first 'needle' found at: " << found << '\n';//查找str2,1found=str.find("needles are small",found+1,6);if (found!=std::string::npos)std::cout << "second 'needle' found at: " << found << '\n';//查找字符串中前六个在第15的位置开始,3found=str.find("haystack");//从开始对字符串进行查找,2if (found!=std::string::npos)std::cout << "'haystack' also found at: " << found << '\n';found=str.find('.');//查找字符'.',从头开始查找,4if (found!=std::string::npos)std::cout << "Period found at: " << found << '\n';// let's replace the first needle:str.replace(str.find(str2),str2.length(),"preposition");//从str中的str2的位置开始,str2的字符长度替换为'preposition'//string& replace (size_t pos, size_t len, const char* s);std::cout << str << '\n';return 0;
}
swap
substr
int main()
{string s1("file.cpp");size_t pos = s1.find('.');if (pos < string::npos){//string suffix = s1.substr(pos, s1.size() - pos);string suffix = s1.substr(pos);cout << suffix << endl;}return 0;
}
rfind
int main()
{string s1("file.cpp.tar.zip");size_t pos = s1.rfind('.');//倒着开始查找if (pos < string::npos){//string suffix = s1.substr(pos, s1.size() - pos);string suffix = s1.substr(pos);cout << suffix << endl;}return 0;
}
find_first_of(用的很少)
int main()
{string str("Please, replace the vowels in this sentence by asterisks.");string str2("abc");size_t found1 = str.find_first_of(str2);//从0开始查找满足str2的位置size_t found2 = str.find_first_of("aeiou");//从0开始查找满足"aeiou"的位置size_t found3 = str.find_first_of("aeiou", 5, 3);//从5开始查找满足"aeiou"的前三个的位置size_t found4 = str.find_first_of("a");//从0开始查找满足'a'的位置while (found2 != std::string::npos){str[found2] = '*';found2 = str.find_first_of("aeiou", found2 + 1);}cout << str << '\n';return 0;
}
find_last_of(用的很少)
跟find_first_of类似,是倒着查找的。
find_first_not_of(用的很少)
这个是和find_first_of反过来的,如果不是里面的字符就会进行替换,是的话就不替换。