c ++零基础可视化——字符串

c ++零基础可视化------字符串


string
定义:
c 复制代码
string str1 = "012345";                             // 012345
string str2 = str1;                                 // 012345
string str3(6, '#');                                // ######
string str4("012345");                              // 012345
string str5(str1);                                  // 012345
string str6(str1, 2);                               // 2345
string str7(str1, 2, 2);                            // 23
string str8("012345", 2);                           // 01
string str9({48, '1', '2'});                        // 012
string str10(str1.begin() + 1, str1.end() - 1);     // 1234

输入输出
c 复制代码
string str;
cin >> str;
cout << str;

cin输入以空格分隔,若想输入整行,则用getline(cin, str)


操作

一些不熟知的用法:

c 复制代码
printf("%s", str.c_str());

在string中除了可以用迭代器表示位置外,还可以直接用下标表示,所以有:

c 复制代码
string str = "abc";
str.insert(1, "def");
// adefbc

在string的erase中,如果不填入删除的个数,只填入删除的位置,则默认将这个位置开始的后续字符全部删除,这与vector是不同的,注意区分。如:

c 复制代码
string str1 = "adefbc";
str1.erase(1, 2);
// afbc
string str2 = "abfc";
str2.erase(1);
// a

append可将字符串加入末尾

c 复制代码
string str = "a";
str.append("??bc");
// a??bc

replace相当于erase和insert的结合

c 复制代码
string str = "a??bc";
str.replace(1, 2, "xyz");
// axyzbc

find

找子串并返回第一次出现的位置,也可规定起点开始查找。如果找不到,则返回string::npos

c 复制代码
string str = "This is island";
int pos = str.find("is");
-> 2
*******************************
string str = "This is island";
int pos = str.find("is", 3);
-> 5
*******************************
string str = "This is island";
int pos = str.find("That");
-> string::npos

substr(),参数包含开始下标和长度。如果不写长度,则返回开始下标到结尾的字串

c 复制代码
string str = "hello";
string sub = str.substr(2, 3);   // llo
string sub1 = str.substr(1);     // ello

starts_with(),ends_with() 前缀判断,后缀判断

c 复制代码
string str = "hello";
bool res = str.starts_with("hel");
-> true
bool res1 = str.ends_with("llo");
->true;

常用普通函数

1 2
stoi() 将字符串转为数字,类型为int
stoll() 将字符串转为数字,类型为long long
stod() 将字符串转为数字,类型为double
to_string() 将数字转为字符串,任意类型数字均可

format()可以构造string


相关推荐
python算法(魔法师版)11 分钟前
基于机器学习鉴别中药材的方法
深度学习·线性代数·算法·机器学习·支持向量机·数据挖掘·动态规划
JNU freshman1 小时前
力扣第435场周赛讲解
算法·leetcode·蓝桥杯
眼镜哥(with glasses)1 小时前
蓝桥杯python基础算法(2-2)——基础算法(B)——模拟(上)
算法
赵鑫亿2 小时前
7.DP算法
算法·dp
iqay3 小时前
【C语言】填空题/程序填空题1
c语言·开发语言·数据结构·c++·算法·c#
程序猿编码3 小时前
自定义命令执行器:C++中命令封装的深度探索(C/C++实现)
linux·c语言·c++·网络安全·shell·命令行
还有糕手3 小时前
算法【有依赖的背包】
算法·动态规划
pursuit_csdn4 小时前
力扣 347. 前 K 个高频元素
算法·leetcode
wen__xvn4 小时前
每日一题洛谷B3865 [GESP202309 二级] 小杨的 X 字矩阵c++
c++·算法·矩阵
makabaka_T_T4 小时前
25寒假算法刷题 | Day1 | LeetCode 240. 搜索二维矩阵 II,148. 排序链表
数据结构·c++·算法·leetcode·链表·矩阵