C++之STL整理(5)之string 用法(创建、赋值、增删查改)整理
注:整理一些突然学到的C++知识,随时mark一下
例如:忘记的关键字用法,新关键字,新数据结构
C++ 的string用法整理
- C++之STL整理(5)之string 用法(创建、赋值、增删查改)整理
- 一、string的初始化
- 1、string 构造函数
- 2、string 基本赋值操作
- 3、string 存取字符操作
- 4、string 插入和删除操作
- 5、string 和 C语言的字符串转换
- 总结
提示:本文为 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类还提供了许多其他功能,比如查找子字符串、比较字符串、拼接字符串等(待续)