(本人只是小新,写博客就是想记录学习,同时让一些大佬看到我的学习记录可以指出我的错误)
目录
(1)对于string的个人理解
(2)字符串的输入
(3)字符串的基本操作
(4)字符串的输出
对于C++中的string用法
1:对于string的个人理解:
string个人理解是字符串类型,既然是字符串的类型,那么这篇文章我就分为第一步如何输入字符串,第二步如何对字符串进行操作,第三步如何输出字符串。
2:字符串的输入:
(1)cin输入字符串:cin后面可以直接加字符串的名字,不过这种输入如果遇到空格,Tab键,回车的话就直接结束。如下面的代码所示:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
//输入字符串abc def
//abc和def之间有个空格
cin>>s;
cout<<s;
return 0;
}
这里的cout可以直接输出字符串的,后面(4)字符串的输出会讲到的。这里abc和def之间是有空格的,cin再读入时遇到边终止了,所以输出是abc 。
(2)gerline读入字符串:getline的读入解决了cin遇到空格等终止的缺点,格式是:getline(cin,s),括号里的cin是固定的,s是一个字符串的名字,代码如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
getline(cin,s);
cout<<s;
return 0;
}
中间有许多空格,输出的时候同时也将这些空格也输出了。(当然还有其他的可以接收空格字符等的,但我喜欢用的是getline)
3:字符串的基本操作:
(1)string字符串的比较:可以直接使用 compare函数 等来比较,比较的规则是,输出第一个不同字符的比较结果,大于返回1,小于返回-1,相等返回0。compare同时也可以接受其它的参数(具体大家可以参考其他资料哈),代码如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a,b;
getline(cin,a);
getline(cin,b);
cout<<a.compare(b);
return 0;
}
(2)insert函数:插入
这里的插入可以是字符或者是字符串
1:插入的是字符:格式是a.insert(pos,n,'s')这里的a是字符串的名字,pos是插入的位置,n是字符个数,s代表的就是插入的字符,注意这里的n不可以省略,即使插入的字符只有一个。
2:插入的是字符串:格式是a.insert(pos," s")这里的a是字符串的名字,pos是插入的位置,s是要插入的字符串。代码如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a,b;
getline(cin,a);
cout<<"插入前:"<<a<<endl;
a.insert(2,"shd");
cout<<"插入后:"<<a<<endl;
getline(cin,b);
cout<<"插入前:"<<b<<endl;
b.insert(3,1,'s');
cout<<"插入后:"<<b<<endl;
return 0;
}
(3)erase函数:删除
删除的格式:a.erase(2,4)这里的a是字符串的名字,2代表的是删除的起始位置,4代表的是从起始位置开始要删除的字符个数。代码如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a,b;
getline(cin,a);
a.erase(2,5);
cout<<a;
return 0;
}
(4)subsrt函数:剪切,我们也可以理解成字符串的子串,格式:a.substr(pos,n)这里的a是字符串的名字,pos是起始位置,n是从起始位置开始算的字符个数。代码如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a,b;
getline(cin,a);
b=a.substr(4,5);
cout<<"b="<<b;
return 0;
}
(5)append函数:添加
其实与insert插入函数的作用差不多,append函数我们一般用来在末尾添加,不需要还要知道原来字符串的长度,append函数如果末尾添加的是字符的话,不管数量多少,都要写一个数字参数代表个数,具体如代码所示:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a,b;
getline(cin,a);
b="abcd";
a.append(b);
cout<<a<<endl;
a.append(1,'2');
cout<<a;
return 0;
}
(6)replace函数:替换
顾名思义就是将字符串中的子串替换成其它的字符或者字符串。首先替换字符串,格式是a.replace(pos,n,"12345")这里的a是字符串名字,pos是起始位置,n是从起始位置算起的字符数,后面的双引号里的就是用它来替换从pos开始的n个字符。如果替换字符的话,格式:a.replace(pos,n,ans,' ' )这里的pos和n跟上面一样,ans是字符个数,' ' 里面的是字符,具体见代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a,b;
getline(cin,a);
b="12345";
a.replace(1,3,"12345");
cout<<a<<endl;
string sa,sb;
getline(cin,sa);
sa.replace(2,1,2,'0');
cout<<sa<<endl;
return 0;
}
(7)find函数:查找
查找字符或者字符串第一次出现的位置,格式具体见代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a,b;
getline(cin,a);
b="123";
cout<<a.find('a')<<endl;
cout<<a.find(b);
return 0;
}
(8)revese函数:反转
具体见代码格式:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a,b;
getline(cin,a);
reverse(a.begin(),a.end());
cout<<a;
return 0;
}
4:字符串的输出
个人比较喜欢用cout输出,虽然效率不高,但方便。代码如下
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a,b;
getline(cin,a);
cout<<a;
return 0;
}