【小梦C嘎嘎——启航篇】string介绍以及日常使用的接口演示

【小梦C嘎嘎——启航篇】string 使用

  • 前言
    • C语言中的字符串
    • 标准库中的string类
    • string 比较常使用的接口
    • 对上述函数和其他函数的测试代码演示:
  • 总结撒花

追梦之旅,你我同行

   
博客昵称:博客小梦
最喜欢的座右铭:全神贯注的上吧!!!
作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主!

博主小留言:哈喽!各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文章推上!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!

前言

    哈喽各位友友们,我今天又学到了很多有趣的知识现在迫不及待的想和大家分享一下! 都是精华内容,可不要错过哟!!!

C语言中的字符串

C语言中,字符串是以’\0’结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要用户自己管理,稍不留神可
能还会越界访问。

标准库中的string类

  1. string是表示字符串的字符串类
  2. 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。
  3. string在底层实际是:basic_string模板类的别名,typedef basic_string string;
  4. 不能操作多字节或者变长字符的序列。在使用string类时,必须包含#include头文件以及using namespace std;

string 比较常使用的接口

【小梦C嘎嘎——启航篇】string介绍以及日常使用的接口演示_第1张图片

【小梦C嘎嘎——启航篇】string介绍以及日常使用的接口演示_第2张图片

【小梦C嘎嘎——启航篇】string介绍以及日常使用的接口演示_第3张图片
【小梦C嘎嘎——启航篇】string介绍以及日常使用的接口演示_第4张图片

【小梦C嘎嘎——启航篇】string介绍以及日常使用的接口演示_第5张图片

【小梦C嘎嘎——启航篇】string介绍以及日常使用的接口演示_第6张图片

【小梦C嘎嘎——启航篇】string介绍以及日常使用的接口演示_第7张图片

【小梦C嘎嘎——启航篇】string介绍以及日常使用的接口演示_第8张图片

【小梦C嘎嘎——启航篇】string介绍以及日常使用的接口演示_第9张图片

【小梦C嘎嘎——启航篇】string介绍以及日常使用的接口演示_第10张图片

【小梦C嘎嘎——启航篇】string介绍以及日常使用的接口演示_第11张图片在这里插入图片描述【小梦C嘎嘎——启航篇】string介绍以及日常使用的接口演示_第12张图片

【小梦C嘎嘎——启航篇】string介绍以及日常使用的接口演示_第13张图片

在这里插入图片描述
【小梦C嘎嘎——启航篇】string介绍以及日常使用的接口演示_第14张图片

【小梦C嘎嘎——启航篇】string介绍以及日常使用的接口演示_第15张图片
【小梦C嘎嘎——启航篇】string介绍以及日常使用的接口演示_第16张图片

【小梦C嘎嘎——启航篇】string介绍以及日常使用的接口演示_第17张图片
【小梦C嘎嘎——启航篇】string介绍以及日常使用的接口演示_第18张图片

在这里插入图片描述
【小梦C嘎嘎——启航篇】string介绍以及日常使用的接口演示_第19张图片

【小梦C嘎嘎——启航篇】string介绍以及日常使用的接口演示_第20张图片

【小梦C嘎嘎——启航篇】string介绍以及日常使用的接口演示_第21张图片
【小梦C嘎嘎——启航篇】string介绍以及日常使用的接口演示_第22张图片【小梦C嘎嘎——启航篇】string介绍以及日常使用的接口演示_第23张图片
在这里插入图片描述
【小梦C嘎嘎——启航篇】string介绍以及日常使用的接口演示_第24张图片

【小梦C嘎嘎——启航篇】string介绍以及日常使用的接口演示_第25张图片

对上述函数和其他函数的测试代码演示:

#include
#include
using namespace std;


void Teststring1()
{
	string s1;
	string s2("hello bit");
	string s3(s2);
	string s4(s2.begin(), s2. end());
	s1 = "abcdef";
	
	cout << s1 << endl;
	cout << s2 << endl;
	cout << s3 << endl;
	cout << s4<< endl;



}

void test_string3()
{
	string s1("hello world");
	string s2 = "hello world";
	for (size_t i = 0; i < s1.size(); i++)
	{
		cout << s1[i] << " ";
	}
	cout << endl;

	string::iterator it = s1.begin();
	while (it != s1.end())
	{
		cout << *it << " ";
		it++;
	}
	cout << endl;

	for (auto ch : s2)
	{
		cout << ch << " ";
	}
	cout << endl;
}


void func(const string & s)
{
	//string::const_iterator it = s.begin();
	//auto it = s.begin();
	//while (it != s.end())
	//{
	//	//*it = 'a';
	//	cout << *it << " ";
	//	it++;
	//}
	//cout << endl;

	//string::const_reverse_iterator rit = s.rbegin();
	/*auto rit = s.rbegin();
	while (rit != s.rend())
	{
		cout << *rit << " ";
		++rit;
	}
	cout << endl;*/

	auto rit = s.rbegin();
	while (rit != s.rend())
	{
		cout << *rit << " ";
		++rit;
	}
	cout << endl;
}

void test_string4()
{
	string s1("hello world");
	string s2 = "hello world";
	func(s1);

}


void test_string5()
{
	string s1("hello worldxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyy");

	string s2(s1);
	cout << s2 << endl;

	string s3(s1, 6, 5);
	cout << s3 << endl;

	string s4(s1, 6, 3);
	cout << s4 << endl;

	string s5(s1, 6);
	cout << s5 << endl;

	string s6(s1, 6, s1.size() - 6);
	cout << s6 << endl;

	string s7(10, 'a');
	cout << s7 << endl;

	string s8(++s7.begin(), --s7.end());
	cout << s8 << endl;

	s8 = s7;
	s8 = "xxx";
	s8 = 'y';
}


void test_string6()
{
	string s1("hello world");
	string s2 = "hello world";
	cout << s1.size() << endl;
	cout << s1.capacity() << endl;
	s1.clear();
	cout << s1.size() << endl;
	cout << s1.capacity() << endl;






}


void test_string7()
{
	string s;
	/*s.reserve(100);
	for (auto ch : s)
	{
		cout << ch << " ";
	}
	cout << endl;

	s.push_back('x');
	s.push_back('x');
	s.push_back('x');
	s.push_back('x');
	s += 'n';
	s += "bit helloc";
	for (auto ch : s)
	{
		cout << ch;
	}
	cout << endl;*/

	//size_t old = s.capacity();
	//cout << "初始" << s.capacity() << endl;

	//for (size_t i = 0; i < 100; i++)
	//{
	//	s.push_back('x');

	//	if (s.capacity() != old)
	//	{
	//		cout << "扩容:" << s.capacity() << endl;
	//		old = s.capacity();
	//	}
	//}

	//s.reserve(10);
	//cout << s.capacity() << endl;
	s = "hello bit";
	cout << s.size() << endl;
	cout << s.capacity() << endl;

	s.resize(10, 'a');
	cout << s << endl;
	cout << s.size() << endl;
	cout << s.capacity() << endl;

}

void test_string8()
{
	string s = "hello";
	s.append(" bit");
	cout << s << endl;
	string s3 = "hello";
	string s2;
	s2 = s3 + " bit";
	cout << s2 << endl;

	s2 += s2;
	cout << s2 << endl;

	//s += '#';
	//s += "hello";
	//s += ss;
	//cout << s << endl;

	//string ret1 = ss + '#';
	//string ret2 = ss + "hello";
	//cout << ret1 << endl;
	//cout << ret2 << endl;
}

void test_string9()
{
	std::string str("xxxxxxx");
	std::string base = "The quick brown fox jumps over a lazy dog.";

	str.assign(base);
	std::cout << str << '\n';

	str.assign(base, 5, 10);
	std::cout << str << '\n';
}


void test_string10()
{
	// 空格替换为20%
	std::string s2("The quick brown fox jumps over a lazy dog.");
	string s3;
	for (auto ch : s2)
	{
		if (ch != ' ')
		{
			s3 += ch;
		}
		else
		{
			s3 += "%20";
		}
	}

	for (auto ch : s3)
	{
		cout << ch;
	}
	cout << endl;

	printf("s2:%p\n", s2.c_str());
	printf("s3:%p\n", s3.c_str());

	swap(s2, s3);
	//s2.swap(s3);

	printf("s2:%p\n", s2.c_str());
	printf("s3:%p\n", s3.c_str());
}


void test_string11()
{
    string s1("test.cpp.tar.zip");
    //size_t i = s1.find('.');
    size_t i = s1.rfind('.');

    string s2 = s1.substr(i);
    cout << s2 << endl;

    //string s3("https://legacy.cplusplus.com/reference/string/string/rfind/");
    //string s3("ftp://www.baidu.com/?tn=65081411_1_oem_dg");
	string s3("https://leetcode.cn/problems/first-unique-character-in-a-string/submissions/");
    // 协议      https
    // 域名      leetcode.cn
    // 资源名    problems/first-unique-character-in-a-string/submissions/
	string sub1, sub2, sub3;
	i = s3.find(':');
	sub1 = s3.substr(0, i);
	cout << sub1 << endl;

	size_t len  = s3.find('/', i + 3);
	sub2 = s3.substr(i + 3, len - (i + 3));
	cout << sub2 << endl;
	sub3 = s3.substr(len + 1);
	cout << sub3 << endl;
}


void test_string12()
{
	std::string str("Please, replace the vowels in this sentence by asterisks.");
	std::size_t found = str.find_first_not_of("abc");
	while (found != std::string::npos)
	{
		str[found] = '*';
		found = str.find_first_not_of("abcdefg", found + 1);
	}

	std::cout << str << '\n';

	/*std::string str("Please, replace the vowels in this sentence by asterisks.");
	std::size_t found = str.find_first_of("abcd");
	while (found != std::string::npos)
	{
		str[found] = '*';
		found = str.find_first_of("abcd", found + 1);
	}

	std::cout << str << '\n';*/

}


int main()
{

	/*string s1, s2;
	cin >> s1 >> s2;
	cout << s1 << endl;
	cout << s2 << endl;*/


	string str;
	//cin >> str;
	getline(cin, str, '!');
	cout << str;

	/*size_t i = str.rfind(' ');
	if (i != string::npos)
	{
		cout << str.size() - (i + 1) << endl;
	}
	else
	{
		cout << str.size() << endl;
	}*/
	//Teststring1();
	//test_string2();
	//test_string3();
	//test_string4();
	//test_string5();
	//test_string6();
	//test_string7();
	//test_string8();
	//test_string9();
	//test_string11();
	//test_string12();
	return 0;
}

总结撒花

   本篇文章旨在分享的是string 使用知识。希望大家通过阅读此文有所收获
   如果我写的有什么不好之处,请在文章下方给出你宝贵的意见。如果觉得我写的好的话请点个赞赞和关注哦~

你可能感兴趣的:(【小梦C嘎嘎——启航篇】,c语言,开发语言,c++)