C++ | string类的使用

目录

构造函数

赋值重载

存储 

遍历  

获取


构造函数

  • string();------无参构造
  • string (const string& str);------拷贝构造
  • string (const char* s);------用字符串初始化
  • template <class InputIterator>  string  (InputIterator first, InputIterator last);------用迭代器初始化[第一个元素位置,最后一个元素的下一个位置)
  • string (size_t n, char c);------用n个相同的字符初始化

    // 无参构造,不能string s1()因为这样会误以为是函数声明或者函数调用
	string s1; 

	// 用字符串初始化
	string s2("你好abcdef"); // string s2="你好abcdef";

	// 拷贝构造
	string s3(s2); // string s3=s2;

	// n个相同的字符初始化
	string s4(9,'c');

	// 用一段区间初始化,区间必须是左闭右开
	char ch[] = "123456";
	string s5(ch, ch + 3);
  • string (const string& str, size_t pos, size_t len = npos);------从str的pos位置开始将长度为len字符串用于初始化
  • string (const char* s, size_t n);------将字符串的前n个字符用于初始化

    // 用字符串初始化
	string s1 = "abcdef";

	// 从pos位置开始将长度为len的字符串用于初始化
	string s2(s1, 2, 3);
	string s3(s1, 3); // 如果不传len,默认长度为npos。如果len超出了,到s1的结尾结束

	// 将字符串的前5个字符用于初始化
	string s4("qwertyuio", 5);

	cout << s1 << endl;
	cout << s2 << endl;
	cout << s3 << endl;
	cout << s4 << endl;

赋值重载

  • string& operator= (const string& str);------用string进行赋值
  • string& operator= (const char* s);------用字符串赋值
  • string& operator= (char c);------用某个字符赋值
    

    string s("wasd2468");

	string s1("abc");

	// 用string进行赋值
	s1 = s;
	cout << s1 << endl;

	// 用字符串赋值
	s1 = "xyz";
	cout << s1 << endl;

	// 用某个字符赋值
	s1 = 'a';
	cout << s1 << endl;

  • void push_back (char c);------尾插一个字符
  • string& append (const string& str);------尾插一个string类
  • string& append (const string& str, size_t subpos, size_t sublen);------尾插一个string类的子string,从subpos位置开始,长度sublen

  • string& append (const char* s);------尾插一个字符串
  • string& append (const char* s, size_t n);------尾插一个字符串的前n个字符
  • string& append (size_t n, char c);------尾插n个相同的字符
  • template <class InputIterator>  string& append (InputIterator first, InputIterator last);------尾插一段区间 

 

  • string& operator+= (const string& str);------尾插一个string类
  • string& operator+= (const char* s);------尾插一个字符串
  • string& operator+= (const char* s);------尾插一个字符 

  • string& insert (size_t pos, const string& str);------在pos位置插入一个string类
  • string& insert (size_t pos, const string& str, size_t subpos, size_t sublen);------在pos位置插入一个string子类
  • string& insert (size_t pos, const char* s);------在pos位置插入一个字符串
  • string& insert (size_t pos, const char* s, size_t n);------在pos位置插入一个字符串的前n个字符
  • string& insert (size_t pos, size_t n, char c);------在pos位置插入n个相同的字符

  • void pop_back();------尾删一个字符
  • string& erase (size_t pos = 0, size_t len = npos);------从pos位置开始,删除len个字符
  • iterator erase (iterator p);------删除迭代器p位置上的字符
  • iterator erase (iterator first, iterator last);------删除一段区间

  • size_t find (const string& str, size_t pos = 0) const;------从pos位置开始,默认从0位置开始,寻找子string类,找到了返回对应第一个字符的下标,如果没有找到返回npos
  • size_t find (const char* s, size_t pos = 0) const;------从pos位置开始,寻找子串
  • size_t find (char c, size_t pos = 0) const;------从pos位置开始,寻找对应的字符
  • size_t rfind (const string& str, size_t pos = npos) const;------从pos位置开始,反向寻找子string类
  • size_t rfind (const char* s, size_t pos = npos) const;------从pos位置开始,反向寻找对应的子串
  • size_t rfind (char c, size_t pos = npos) const;------从pos位置开始,反向寻找字符 

  • char& operator[] (size_t pos);------返回对应位置的字符引用
  • string& assign (const string& str);------为string指定一个新值,替换其当前内容
  • string& assign (const char* s);------将当前内容替换成新字符串
  • string& replace (size_t pos,  size_t len,  const string& str);------将pos位置开始,len个字符替换成新string类
  • string& replace (iterator i1, iterator i2, const string& str);------将对应的区间[i1,i2)替换成新string类
  • void swap (string& str);------和一个string类进行交换

存储 

  • size_t size() const;------返回已存储的字符个数
  • size_t length() const;------返回字符串的长度
  • size_t capacity() const;------返回容量
  • void clear();------清空长度
  • bool empty() const;------判断string类是否为空
  • void resize (size_t n, char c = '\0');------改变size的大小,用c填充
  • void reserve (size_t n = 0);------改变capacity的大小
  • void shrink_to_fit();------让capacity与size适应
  • const char* c_str() const;------返回首地址 

遍历  

  • iterator begin();------首元素位置
  • iterator end();------最后一个元素的下一个位置
  • reverse_iterator rbegin();------最后一个元素的位置
  • reverse_iterator rend();------首元素的前一个位置 

获取

  • size_t copy (char* s, size_t len, size_t pos = 0) const;------将string类中的一段字符串写入s中
  • string substr (size_t pos = 0, size_t len = npos) const;------在string类中,从pos位置开始,截取len个字符,然后将其返回
  • istream& getline (istream& is, string& str, char delim);------获取一行字符串

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值