string类简介
string类是C++98标准对C++库的扩展,用来存储字符串。使用string类需要包含<string>
头文件。
以下是摘自<xstring>
头文件中的代码,<string>
头文件中包含了<xstring>
。
// string是basic_string<char, char_traits<char>, allocator<char>>的别名
using string = basic_string<char, char_traits<char>, allocator<char>>;
创建string类对象
代码示例:
#include <string>
#include <iostream>
using namespace std;
int main()
{
// 创建一个空对象
string s;
// 用字符串常量初始化对象
string str = "abcd"; //abcd
//string str("abcd"); //abcd
//string str({ "abcd" }); //abcd
cout << str << endl;
// 用已有string对象初始化新对象
string str1(str); //abcd
cout << str1 << endl;
// 用已有string对象中下标为1开始的所有元素初始化新对象。
string str2(str1, 2); //cd
cout << str2 << endl;
// 用已有string对象中下标为1开始的3个元素初始化新对象。
string str3(str1, 1, 3); //bcd
cout << str3 << endl;
// 用已有对象的[begin(), end())中元素初始化新对象
string str4(str1.begin(), str1.end()); //abcd
cout << str4 << endl;
// 用5个‘c’字符初始化新对象
string str5(5, 'c');
cout << str5 << endl; //ccccc
return 0;
}
string类常用函数
成员函数
- 序列容器通用方法
函数 功能 reference at(size_type n) 返回下标为n的元素的引用。 reference back() 返回最后一个元素的引用。 reference front() 返回第一个元素的引用。 iterator begin() 返回第一个元素的迭代器 iterator end() 返回最后一个元素下一个位置的迭代器 const char* data() const 返回string对象的字符串常量第一个字符的地址 size_type size() const 返回string对象中元素个数 size_type max_size() const 返回string对象可以容纳的最大元素个数。受系统限制。 size_type capacity() const 返回当前对象的容量。 bool empty() const 判断是否为空,元素个数为0返回true。 void clear() 删除所有内容 oid push_back(const char ch) 字符串尾部插入一个字符。 void pop_back() 删除最后一个字符 void swap(string &s) 交换当前字符串与s中的内容 - string专用方法
说明:函数 功能 string& assign(string& s) 赋值操作。 string& append(string& s) 追加操作。 const char* c_str() const 返回string对象的字符串常量 size_type length() const 返回string对象中元素个数 size_type find(char ch, size_type off= 0) const 从指定位置开始查找一个字符,默认从开始查找 size_type find(string& s, size_type off= 0) const 从指定位置开始查找一个字符串,默认从开始查找 iterator insert(iterator pos, char ch) 在pos位置插入一个字符。
(1)append函数。string还提供了追加字符串中部分元素,追加一个区间中的元素,追加n个字符等函数。
(2)assgin函数。string还提供了赋值字符串中部分元素,赋值一个区间中的元素,赋值n个字符等函数。
(3)find函数。string还提供了find_first_of
(查找第一个配置的)、find_first_not_of
(查找第一个不配置的)、find_last_of
(查找最后一个配置的)、find_last_not_of
(查找最后一个不配置的)、rfind
(从后往前查找)函数。
其他函数
<string>
头文件中还定义了一些string相关的流输入函数和string与其他类型转换的函数。
- 流输入函数
示例:函数 功能 istream& getline(istream &is, string& str, const char delim) 从输入流中获取字符写入str中,遇到delim停止 istream& getline(istream &is, string& str) 从输入流中获取字符写入str中,碰到’\n’停止
程序运行结果:#include <sstream> #include <iostream> using namespace std; int main() { string str("/abc/def/cd"), tmp(""); istringstream instr(str); //字符串流输入 while (getline(instr, tmp, '/')) { cout << tmp << endl; } return 0; }
abc def cd
- string转数字
函数 功能 int stoi(const string& str, size_t* idx = nullptr, int base = 10) string转int long stol(const string& str, size_t* idx = nullptr, int base = 10) string转long unsigned long stoul(const string& str, size_t* idx = nullptr, int base = 10) string转unsigned long long long stoll(const string& str, size_t* idx = nullptr, int base = 10) string转long long unsigned long long stoull(const string& str, size_t* idx = nullptr, int base = 10) string转unsigned long long float stof(const string& str, size_t* idx = nullptr) string转float double stod(const string& str, size_t* idx = nullptr) string转double long double stold(const string& str, size_t* idx = nullptr) string转long double - 数字转string
函数 功能 string to_string(int val) int转string string to_string(unsigned int val) unsigned int转string string to_string(long val) long转string string to_string(unsigned long val) unsigned long转string string to_string(long long val) long long转string string to_string(unsigned long long val) unsigned long long转string string to_string(double val) double转string string to_string(float val) float转string string to_string(long double val) long double转string