C++字符串使用详解

目录

  • 字符串初始化
  • 字符串函数
    • 字符串大小,是否为空
    • 拼接
    • 插入
    • 找到子串位置
    • 字符串的遍历
  • 字符串的替换

字符串初始化

  • 这是头文件
#include 
using namespace std;
string s;
// 空串长度为0
cout << s.size() << endl;

string s1 = "string";

string s2("string");

// s3 内容为 666666
string s3(6, '6');

// 拷贝的是内容
string s4 = s3;
s4[0] = '5';
// 输出仍然是 666666
cout << s3 << endl;
// 输出是 566666
cout << s4 << endl;

字符串的相关函数

  • 字符串大小,判空
string s = "string ";
// 字符串大小
s.size();
// 是否为空
bool b = s.empty();
  • 字符串拼接的几种方式
string s = "string ";

string s1 = "this is a " + s;

s1 += s;

s1.append(s);

// 后面追加10个字符'a'
s1.append(10, 'a');
  • 插入
s.insert(0, "aaa");
  • 寻找子串位置
unsigned long index = s.find('s');

index = s.find("str");
  • 遍历
for (char c: s) {
        cout << c << endl;
    }
for (int i = 0; i < s.size(); ++i) {
    cout << s1[i];
}

字符串的替换

string src_s = "abcdef";
string s1 = "0123456789";
// 首先参数摆出最长的,后面就可以参考这个!!
src_s.replace(1, 2, s1, 3, 4);
/**
 * 这个表示 在原来的字符串 src_s 中的
 *  -> 1号位置 开始,加上这个位置往后的2个位置被替换掉,也就是替换掉 "bc" 被换掉
 *  -> 被替换的内容是 s1串 的3号位置开始,加上这个位置往后的4个位置来替换,也就是 "3456"
 *  -> 结果就是 a3456def
 */

src_s = "abcdef";
// 后面少一个参数,代表开始的位置是4号,长度就是剩余的全部长度,这个时候的替换成的内容是 456789 ,结果是 a456789def
src_s.replace(1, 2, s1, 4);
cout << src_s << endl;

// 将 bc 替换成 s1子串全部
src_s = "abcdef";
src_s.replace(1, 2, s1);
cout << src_s << endl;
  • 将子串替换成另外一个子串
void replace_sub_str(string &string1, string str1, string str2) {
    unsigned long i = string1.find(str1);
    // 如果找到子串,则开始替换
    while (i>=0 && i

你可能感兴趣的:(C++字符串使用详解)