ฅ(๑˙o˙๑)ฅ 大家好, 欢迎大家光临我的博客:面向阿尼亚学习
算法学习笔记系列持续更新中~
一、前言
在 C++ 中,要使用 string 类,必须包含头文件 。string 库提供了许多其他功能,如删除字符串的部分或全部,用一个字符的部分或全部替换另一个字符串的部分或全部,插入、删除字符串中数据,比较、提取、复制、交换等。
二、string的输入
1.cin >>
//第一种用法是逐个输入数字或者字符,中间用空格隔开。这是最基本的。
//第二种用法是读入一个字符串,遇到”空格、“TAB”、“回车”都会结束,例如:
2.cin.get()
//用法1:cin.get(字符变量名)可以用来接受字符 只能输出一个字符
//用法2:cin.get(字符数组名,接受字符数目)用来接收一行字符串,可以接收空格 可以输入多个单词
//用法3:cin.get(无参数),无参数主要用于收纳输入流中的不需要的字符,或者收纳回车,弥补cin.get(字符数字名,接收字符数目)的不足。
3.cin.getline()
//用法1:接收一个字符串,可以接受空格并输出 cin.getline(s,15);
//用法2:cin.getline(接受字符串到n, 接收个数6,结束字符) cin.getline(s,25,'n');
4.getline()
//接收一个字符串,可以接受空格并输出,在头文件< string >中
5.gets()
//接受一个字符串,可以接受空格并输出
6.getchar()
//接收一个字符
char ch;
while((ch = getchar()) != '\n')//循环输入时,作为判断条件 ch = getchar();//不能写作getchar(ch)
三、string的常用函数
//复制
string s1="hello";
string s2=s1;
//连接
string s1;
string s2;
s1=s1+s2;
//比较
if(s1<s2)cout<<s1;
else cout<<s2;
strcmp(s1,s2);
//strcmp比较两个字符串的大小,一个字符一个字符比较,按ASCLL码比较标准规定:
//第一个字符串大于第二个字符串,则返回大于0的数字
//第一个字符串等于第二个字符串,则返回0
//第一个字符串小于第二个字符串,则返回小于0的数字
//倒置
reverse(s.begin(),s.end());
//获取长度
int n=s.size();
int n=s.length();
int n=s.strlen();//字符串中'\n'前出现字符的个数
//查找
cout<<s.find()//返回首次出现的位置,没有则返回s.npos
//插入
s.insert(2,"www")//输出hewwwllo
//删除
s.erase(1,2)//删除位置1处后两个位置
//截取
s.substr(1,3)//截取位置1处后三个位置
c_str() 函数
返回这个string对应的字符数组的头指针
//对于string类型的字符串,需要调用c_str()函数转换为字符数组后才能作为参数转换
string s = "Hello World!";
printf("%s", s.c_str()); //输出 "Hello World!"
char *cstr = (char*)str.c_str(); //先用c_str()把string型转换成const char*型,再强制转换成char*型
stoi函数
stoi(字符串,起始位置,n进制(默认10进制)),将 n 进制的字符串转化为十进制
包含在头文件 #include<string>
string a;//初始化为空串
cout<<stoi(a)<<endl; //表示将字符串a换成整数输出)(十进制)
#include<iostream>
#include<string>
using namespace std;
int main() {
string str = "1200";
int a = stoi(str);//默认是10进制的,将 10 进制的字符串1200转化为十进制数值
int b = stoi(str, 0,8);//8进制的1200转换成10进制
cout <<"a(10进制的字符串1200转化为十进制数值):\n" <<a << endl;
cout <<"b(8进制的1200转换成10进制):\n" <<b << endl;
return 0;
}
to_string()函数
将数值转化为字符串。返回对应的字符串
#include <iostream>
#include <string>
using namespace std;
int main()
{
string pi = "pi is " + std::to_string(3.1415926);
float pf = 42430.23;
string float_str = to_string(pf) + " is a number";
cout << pi << '\n';
cout << float_str << '\n';
system("pause");
}
另外:字符串中的子串和子序列
子串
:必须连续
子序列
:可以不连续
连续子序列==子串
最后
莫言真理无穷尽,寸进自有寸进欢