C++ 字符串 string 用法简述

C++ 是 C 的超集,因此 C++ 中的字符串可利用 C 的写法,可以戳此链接了解;另外一种方法是利用 string 类库,本文主要介绍这种方式。

string 类使用起来比字符数组简单许多,能够像处理普通数组一样处理字符串。

声明

如果要使用 string,需要添加 string 头文件,该头文件位于名称空间 std 中。

#include <string>
using namespace std;

声明 string 的方式跟基本数据类型相同,按照变量名加变量类型的方式

string str;

初始化

如果要进行初始化,可以直接给 string 类型的变量进行赋值,还可以使用括号的形式。

string str = "abcd";
string str("abcd");

与其它变量一样,也可使用列表的方式进行初始化。

string str = {"abcd"};
string str {"abcd"};

类的设计能够自动处理 string 的大小,而 C 语言风格数组容易出现字符串长度超过声明大小的现象。

内容访问

  1. 通过下标访问

可以直接像字符数组那样去访问字符串,如 str[20]

  1. 通过迭代器访问

得到了迭代器 it,其类似于指针,可以通过 *it 来访问 string 里的每一位元素。begin() 函数表示字符串首个字母的位置,end() 函数表示最后一个字母的下一个位置。

for (string::iterator it = str.begin(); it != str.end(); it++)
	cout << *it << endl;;

赋值

string 类操作比数组要简单得多。如果用数组表示,不能将一个数组赋值给另一个数组,但可以将一个 string 对象赋值给另一个 string 对象。

string str1;
string str2 = "abcd";
str1 = str2;

拼接

使用运算符 + 将两个 string 对象合并起来,当然也可使用运算符 +=

string str1 = "abc", str2 = "xyz", str3;
str3 = str1 + str2;
str1 += str2;

比较

两个 string 类型可以直接使用 ==!=<<=>>= 比较大小。

长度

size() 返回 string 的长度,即存放的字符数。length() 功能相同。

str.size();
str.length();

插入

pos 号位置插入字符串 str2

str.insert(pos, str2);

删除

删除单个元素。

str.erase(*it);

删除一个区间内所有的元素。

str.erase(first, last);

first 为要删除区间的起始迭代器,last 为要删除区间的末尾迭代器的下一个地址。或者 pos 为需要开始删除的起始位置,length 为删除的字符个数。

str(pos, length);

清空string中的数据。

str.clear();

字串

截取子串。

substr(pos, len);

返回从 pos 号位开始且长度为 len 的子串。

查找

str.find(str2);

str2str 的子串时,返回其在 str 中第一次出现的位置;如果 str2 不是 str 的子串,那么返回 string:npos

str.find(str2.pos);

strpos号位置开始匹配str2,返回值与上相同。

string::npos是一个常数,其本身值为-1,但由于是unsigned_int类型,因此实际上也可以认为是 unsigned_int 类型的最大值。string::npos 用作 find 函数失配时的返回值。

if (string::npos == -1);
if (string::npos == 4294967295);

替换

str.replace(pos, len, str2)

strpos 号位开始、长度为 len 的子串替换为 str2

str.replace(it1, it2, it3);

str 的迭代器 [it1, it2) 范围的子串替换为 str2

与数进行转换

stoi() 将字符串转化为整型。

string s = "99";
int n = stoi(s)

此外还有 stol()stoll() 函数,分别表示转化为 long 型和 long long 型。还有 stoul()stoull() 函数,表示转化为无符号整型。还有 stof()stod()stold() 表示转化为浮点型。

to_string() 表示把整数或浮点数转化为字符串。

int n = 99;
string s = to_string(n);

输入

可使用 cin 输入,但是 cin 以换行、空格等作为分隔,因此使用它只能读取一个单词,不能读取包含空格的字符串。

C++提供了 getline()get() 函数读取一行文本作为字符串输入,详细可戳此链接查看。

更多内容可以查看文档

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值