STL.string(中)

string

迭代器

cpp 复制代码
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();//修饰的是*cit
	while (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

cpp 复制代码
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,1

  found=str.find("needles are small",found+1,6);
  if (found!=std::string::npos)
    std::cout << "second 'needle' found at: " << found << '\n';//查找字符串中前六个在第15的位置开始,3

  found=str.find("haystack");//从开始对字符串进行查找,2
  if (found!=std::string::npos)
    std::cout << "'haystack' also found at: " << found << '\n';

  found=str.find('.');//查找字符'.',从头开始查找,4
  if (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

cpp 复制代码
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

cpp 复制代码
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(用的很少)

cpp 复制代码
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反过来的,如果不是里面的字符就会进行替换,是的话就不替换。

相关推荐
一晌小贪欢7 小时前
Python 爬虫进阶:如何利用反射机制破解常见反爬策略
开发语言·爬虫·python·python爬虫·数据爬虫·爬虫python
君生我老7 小时前
C++自写list类
c++
阿猿收手吧!7 小时前
【C++】异步编程:std::async终极指南
开发语言·c++
REDcker7 小时前
gRPC开发者快速入门
服务器·c++·后端·grpc
doupoa7 小时前
内存指针是什么?为什么指针还要有偏移量?
android·c++
小程故事多_807 小时前
Agent Infra核心技术解析:Sandbox sandbox技术原理、选型逻辑与主流方案全景
java·开发语言·人工智能·aigc
沐知全栈开发7 小时前
SQL 日期处理指南
开发语言
黎雁·泠崖7 小时前
【魔法森林冒险】3/14 Allen类(一):主角核心属性与初始化
java·开发语言
黎雁·泠崖7 小时前
【魔法森林冒险】1/14 项目总览:用Java打造你的第一个回合制冒险游戏
java·开发语言
独好紫罗兰7 小时前
对python的再认识-基于数据结构进行-a006-元组-拓展
开发语言·数据结构·python