初始化 //默认初始化为空字符串
string sub;//默认初始化为空字符串
截取.substr()
string c = s.substr(i, k)//从i起,长为k
追加字符.push_back(A); //其中A是char类型
- //应用: 由此可以将string用栈思想来操作( stack.top() = string.(string.length()-1) )
string s;
s.push_back('a');
接收
无惧空格,读入一整行 getline:
getline(cin, s);//遇到换行符才会停
- 注意:cin后,用getline前,要先进行一次getline来“清除缓存”。
string s;
cin>>s;
getline(cin, s);//清除缓存:此时输入s为""
getline(cin, s);//正式接收新的输入
查找
易错: 单个字符用单引号;// 如 s.find('A');
.find()
- 若成功找到,返回第一次出现位置的首字母下标,
- 若找不到,返回标记 s.npos (一般来说,其实就是整型值 -1)
string s;
int pos1 = s.find('A');//单个字符用单引号哦~
int pos = s.find("tofind");
if(pos == s.nops) cout<<"not found";
if(pos >= 0) cout<<"found";
.rfind():
- 若字符找到,返回从右往左数第一次出现该字符的位置下标
(组合应用例) 将A换成B:
分两步:
- 1.用.find方法找到A;
size_t pos = s.find("world");
//size_t是无符号整数类型,主要用于表示内存大小、对象大小或数组索引等
//此处用int也可以的
- 2.用,replace方法替换为B;
s.replace(pos, len, "C++");
替换实现:
#include<bits/stdc++.h>
using namespace std;int main()
{string s = "Hello world";int pos = s.find("world");if(pos != string::npos){int len = strlen("world");s.replace(pos, len, "C++");}cout<<s<<endl;//输出"Hello C++"
}
(组合应用例) 将字符串 sub 中的字符 'A' 前的子串删除掉
string sub = "fddfsdfhods";
int pos = sub.find('A');
if(pos >= 0)//找到了
{sub = sub.substr(pos, sub.length() - 1 - pos);
}