字符串 string用法

#include <string>

顾名思义,就是储存字符串的。

常用方法

构造

构造函数:string(长度, 初值)

string s1;           // 构造字符串,为空
string s2 = "awa!";  // 构造字符串,并赋值awa!
string s3(10, '6');  // 构造字符串,通过构造函数构造为6666666666
输入输出

C++

string s;
cin >> s;
cout << s;

C

string s;
char buf[100];
scanf("%s", &buf);
s = buf;
printf("%s", s.c_str());
其他
作用用法示例
修改、查询指定下标字符[]s[1] = 'a';
是否相同==if (s1 == s2) ...
字符串连接+string s = s1 + s2;
尾接字符串+=s += "awa";
取子串.substr(起始下标, 子串长度)string sub = s.substr(2, 10);
查找字符串.find(字符串, 起始下标)int pos = s.find("awa");
数值与字符串互转(C++11)
目的函数
int / long long / float / double / long doublestringto_string()
stringintstoi()
stringlong longstoll()
stringfloatstof()
stringdoublestod()
stringlong doublestold()

适用情形

非常好用!建议直接把字符数组扔了,赶快投入 string 的怀抱。

注意事项

尾接字符串一定要用 +=

string 的 += 运算符,将会在原字符串原地尾接字符串。而 + 了再 = 赋值,会先生成一个临时变量,在复制给 string.

通常字符串长度可以很长,如果使用 + 字符串很容易就 TLE 了。

// 优化前: 15139ms
string s;
for (int i = 0; i < 5e5; i++)
    s = s + "a";

// 优化后: < 1ms (计时器显示0)
string s;
for (int i = 0; i < 5e5; i++)
    s += "a";
.substr() 方法的奇葩参数

一定要注意,C++ string 的取子串的第一个参数是子串起点下标,第二个参数是子串长度

第二个参数不是子串终点!不是子串终点!要与 java 等其他语言区分开来。

.find() 方法的复杂度

该方法实现为暴力实现,时间复杂度为 O(n^{2}).

不要幻想 STL 内置了个 O(n)的 KMP 算法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值