天天看点

char截取字符串_字符串 — string

STL 中还有一个字符串类

初始化

string

类的初始化非常简单直接,另外在现代的C++中不建议再使用老的

char*

了。

初始化也可以是复制另一个字符串

  • string s(str)

    s

    str

    的复制。
  • string s(str, strbegin, strlen)

    s

    str

    始于 strbegin 长为 strlen 的复制。
char截取字符串_字符串 — string

string 类的初始化方法

string s1 = "123";
string s2;
cin >> s2;  // 从输入台读入 s2 的内容
getline(cin, s2);
           

比较

string

类重载了运算符,因此可以直接用

==

>

等符号进行字符串的比较。

bool equal = (str == "1234"); // true
           

类方法

向字符串末尾添加可以直接使用

+=

运算符,也可以使用

append

push_back

这种函数。

string str = "123";
str += "4"; // +=, append(), push_back()都可以用来添加字符
           

可以用

empty()

方法判断字符串是否为空。

size()

length()

方法都可以返回字符串的长度。

bool empty = str.empty();
           

substr

方法截选子串

str.substr(str.length()-6, 6);  // 截取后6位子串
str.substr(1, 5);  // 从第 1 位开始,截选长度为 5 的子串。(第一个参数不能越界,第二个参数可以越界)
// str.substr(str.size(), 10) 是空串, str.substr(str.size() + 1, 10) 会报错
           

data()

方法将内容以

字符数组

形式返回,类似于Java的

toCharArray()

方法。

reserve()

方法:保留内存以存储一定数量的字符

string

类还支持迭代器。

string

类可以用

[]

去取一个单独的字符,返回的是一个

char

类型的引用,可以用这种方式修改

string

。(注意不要像Python那样用一个slice, [1:3]这样,去截选子串哦)

char c = str[0];
for (char c : str) {
    // do sth.
}
           

algorithm包下的方法

  • 可以对字符串里的

    char

    字符进行排序:

    sort(s.begin(), s.end());

  • 删除字符串的一个子串:

    s.erase(s.begin(), s.begin() + 3);

  • 字符串逆序

    reverse(s.begin(), s.end());