string数据类型能够在字符串模拟题目中得到很大的方便,有很多特别实用的操作,比如查找、替换、将字符串类型换成int型等
1.输入:
string数据类型输入有很多种方式.
(1)如果我们要每次输入一个单词(不含空格),可以直接用cin>>s1;
(2)如果我们每次要输入一句话呢?包含空格,遇换行符结束。这个时候我们可以采用getline。
getline(cin,s1);这句话可以输入一句话,直至空格结束
2.操作(一些基本的操作,比如返回字符串长度,比较,连接之类的):
s.empty() | 如果s为空串,则返回true,否则返回false |
s.size() | 返回s中字符的个数 |
s[n] | 返回s中位置为n的字符,位置从0开始计数(可将值赋给s[n]) |
s1+s2 | 把s1和s2连接成一个新字符串,返回新生成的字符串 |
s1=s2 | 把s1内容替换为s2的副本 |
v1==v2 | 比较v1与v2 的内容,相等则返回true ,否则返回false |
!=,<,<=,>和>= | 保持这些操作符惯有的含义 |
3.其他一些常用的操作:
s.insert(pos,s2) | 在s下标为pos的元素前插入string类型s2 |
s.substr(pos,len) | 返回一个string类型,它包含s中下标为pos起的len个字符 |
s.erase(pos,len) | 删除s中下标为pos开始的len个字符 |
s.replace(pos,len,s2) | 删除s中下标为pos的len个字符,并在下标为pos处插入s2 |
s.find(s2,pos) | 在s中以pos位置起查找s2第一次出现的位置 |
s.c_str() | 返回一个与s字面值相同的C风格的字符串临时指针 |
4.字符串转整数:
字符串转整数,如果是字符数组,可以直接用atoi(s1)返回一个int型,atol(s1)返回long型,atof等等。
但是如果碰见string类型的,就必须要用s.c_str()了。s.c_str()是返回一个字符串数组的指针,就像我们平时定义的char s[10]那样。但是注意一旦string类型的发生改变,s.c_str()的也会随着改变,所以若想保存应该使用strcpy函数提前保存。ps:atoi可以忽略前导0,很方便。
#include<cstdio>
#include<cstring>
#include<iostream>
#include <bits/stdc++.h>
using namespace std;
int main() {
char s1[10] = "0000123.4";string s2 = "3456";
float a,b;
a = atof(s1);
b = atoi(s2.c_str());
cout<<a+b<<endl;
return 0;
}