C++之STL整理(5)之string 用法(创建、赋值、增删查改)整理

C++之STL整理(5)之string 用法(创建、赋值、增删查改)整理

注:整理一些突然学到的C++知识,随时mark一下
例如:忘记的关键字用法,新关键字,新数据结构



提示:本文为 C++ 中 string构造、赋值、接口 的写法和举例


一、string的初始化

  string是一个对char*封装的一个STL容器类,相当于一个vector<char>的char数组(只是相当于,可以去看string的源码理解),用于处理字符串。它提供了丰富的成员函数和操作符重载,使得字符串的操作变得简单而高效。下面逐一解释std::string的构造函数、基本赋值操作和存取字符操作,并给出相应的例子。

1、string 构造函数

string()用来创建一个空的字符串。

std::string emptyStr; // emptyStr 是一个空字符串

string(const string& str);使用一个已有的string对象初始化另一个string对象。

std::string str1 = "Hello";  
std::string str2(str1); // str2 现在也是 "Hello"

string(const char* s);使用C风格的字符串(以null结尾的字符数组)初始化string对象。

const char* cStr = "World";  
std::string str(cStr); // str 现在是 "World"

string(int n, char c);使用n个字符c来初始化string对象。

std::string str(5, '*'); // str 现在是 "*****"

2、string 基本赋值操作

string& operator=(const char* s);将C风格的字符串赋值给当前的string对象。

std::string str;  
str = "New String"; // str 现在是 "New String"

string& operator=(const string &s);将一个string对象赋值给当前的string对象。

std::string str1 = "Copy";  
std::string str2;  
str2 = str1; // str2 现在是 "Copy"

string& operator=(char c);将一个字符赋值给当前的string对象,这通常会导致string对象只包含这一个字符。

std::string str;  
str = 'A'; // str 现在是 "A"

string& assign(const char *s);将C风格的字符串赋值给当前的string对象。

std::string str;  
str.assign("Assigned"); // str 现在是 "Assigned"

string& assign(const char *s, int n);将C风格的字符串的前n个字符赋值给当前的string对象。

std::string str;  
const char* cStr = "abcdefgh";  
str.assign(cStr, 4); // str 现在是 "abcd"

string& assign(int n, char c);使用n个字符c赋值给当前的string对象。

std::string str;  
str.assign(3, '$'); // str 现在是 "$$$"

string& assign(const string &s, int start, int n);将另一个string对象从start位置开始的n个字符赋值给当前的string对象。

std::string str1 = "123456789";  
std::string str2;  
str2.assign(str1, 2, 4); // str2 现在是 "3456"

3、string 存取字符操作

char& operator[](int n);通过索引n访问string对象中的字符(并返回引用,因此可以修改该字符)。

std::string str = "Hello";  
str[1] = 'i'; // str 现在是 "Hillo"

char& at(int n);通过索引n访问string对象中的字符(并返回引用,因此可以修改该字符)。如果索引越界,会抛出std::out_of_range异常。

std::string str = "Hello";  
char c = str.at(1); // c 现在是 'e'

4、string 插入和删除操作

string& insert(int pos, const char* s);在指定位置pos插入C风格的字符串s。

std::string str = "Hello";  
str.insert(2, " World"); // str 现在是 "He Worldlo"

string& insert(int pos, const string& str);在指定位置pos插入另一个string对象str。

std::string str1 = "Hello";  
std::string str2 = " World";  
str1.insert(2, str2); // str1 现在是 "He Worldlo"

string& insert(int pos, int n, char c);在指定位置pos插入n个字符c。

std::string str = "Hello";  
str.insert(2, 3, '*'); // str 现在是 "He***llo"

string& erase(int pos, int n = npos);从位置pos开始删除n个字符。如果n未指定或为npos,则删除从pos到字符串末尾的所有字符。

std::string str = "Hello World";  
str.erase(7, 5); // str 现在是 "Hello"

5、string 和 C语言的字符串转换

在C++中,std::string和C风格的字符串(以null结尾的字符数组)经常需要相互转换。

const char* c_str();将std::string对象转换为C风格的字符串(const char*)。

std::string str = "itcast";  
const char* cstr = str.c_str(); // cstr 指向 "itcast" 的C风格字符串

string(const char* s);使用C风格的字符串初始化std::string对象。

char* s = "itcast";  
std::string str(s); // str 现在是 "itcast"

这些只是std::string类中关于插入、删除和与C风格字符串转换的常用操作的一部分。std::string类还提供了许多其他功能,比如查找子字符串、比较字符串、拼接字符串等(待续)

总结

  • 32
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值