【C++】蓝桥必备-STL<Part 2-string>

129 阅读2分钟

STL第二部分(string)

✨1、string【字符串】

支持比较操作符>,>=,<,<=,==,!=

① 头文件

#include <string>

② 初始化

// 初始化字符串s1 
string s1 = "Hello world";

③ substr() 求子串

//可以作为字符串数组
cout << "角标为0-5:" << s1.substr(0, 5) << endl;  // 从角标为0开始,输出至角标为5的数 
cout << "角标超出范围:" << s1.substr(0, 15) << endl;  //如果超出数组角标范围,则输出原字符串
cout << "角标为3开始输出至结束" << s1.substr(3) << endl;  //从下标为3开始输出至结束 
cout << "输出字符串全部:" << s1.substr(0) << endl;  //原子串

④ c_str()

  • c_str()函数返回一个指向正规C字符串的指针常量(const char*)
  • 内容与本string串相同。
  • PS:在实际的编码中,对一个字符串变量进行赋值时严禁强制改变变量类型的方式进行修改字符串变量保存内容。
std::cout << s1.c_str() << endl;  // 输出:Hello World

⑤ push_back() 和 insert()

  • push_back() 向原字符串后追加字符
    追加字符串会报错[Warning] multi-character character constant [-Wmultichar]
  • insert() 可插入字符串
// push_back() 和 insert()
s1.push_back('b');
std::cout << s1 << endl;  // 输出Hello worldb

s1.insert(0,"c++,");
std::cout << s1 << endl;  // 输出c++,Hello worldb

image.png

①至⑤运行截图

⑥ empty() (与vector一致)

判断a是否为空,空则返回true,非空则返回false

⑦ size() 和 length()

两者作用相同,都是求字符串长度

由于std::string中是类型无符号,故当s1.length() < s2.length()时,需要将其类型转为int进行相减

std::cout << "s1->size():" << s1.size() << "\ns1->length():"<< s1.length() << endl;

⑧ clear()(与vector一致)

清空字符串

s1.clear();
std::cout << "s1是否为空:" << s1.empty();  // 输出1

image.png

⑥至⑧运行截图

## ✨2、附全文代码
#include <iostream>
#include <string>

using namespace std;

int main(){
	
	// 初始化字符串s1 
	string s1 = "Hello world";
	std::cout << s1 << endl;
	
	//可以作为字符串数组
    std::cout << "角标为0-5:" << s1.substr(0, 5) << endl;  // 从角标为0开始,输出至角标为5的数 
    std::cout << "角标超出范围:" << s1.substr(0, 15) << endl;  //如果超出数组角标范围,则输出原字符串
    std::cout << "角标为3开始输出至结束" << s1.substr(3) << endl;  //从下标为3开始输出至结束 
    std::cout << "输出字符串全部:" << s1.substr(0) << endl;  //原子串
    
    std::cout << s1.c_str() << endl;  // 输出:Hello World
    
    // push_back() 和 insert()
    s1.push_back('b');
    std::cout << s1 << endl;
    
    s1.insert(0,"c++,");
    std::cout << s1 << endl;
    
    // empty() 
    std::cout << "s1是否为空:" << s1.empty() << endl;
    
    // size()和length()
	std::cout << "s1->size():" << s1.size() << "\ns1->length():"<< s1.length() << endl;
	
	// clear()
	s1.clear();
	std::cout << "s1是否为空:" << s1.empty();
	
	return 0;
}