string的用法

概念

可代替字符数组来存储字符串

访问
cpp 复制代码
string name[i];//下标访问
string::iterator it;//迭代器访问
常用函数

1.begin():获得字符串首地址

2.end():获得字符串末地址

3.+=:字符串的加法,可将两个字符串拼接起来

4.比较符:==,>,<,>=,<=,!=

5.length()与size():返回字符串的长度

6.insert(a,b):a-插入位置,b-插入字符内容

7.erase():删除字符

8.clear():清空

9.substr(pos,len):返回从pos号位开始,长度为len的子串

cpp 复制代码
#include <iostream>
#include <string>//使用string要添加的头文件
using namespace std;
int main(){
    string nu,str=" love you!";
    cin>>nu;
    for(int i=0;i<nu.length();i++)
    cout<<nu[i];//通过下标访问
    cout<<endl;
    if(nu!=str) cout<<"not equal.."<<endl;
    else cout<<"equal.."<<endl;
    nu+=str;//字符串的拼接
    for(string::iterator it=nu.begin();it!=nu.end();it++)
    cout<<*it;//通过迭代器访问
    cout<<endl;
    nu.insert(0,"I am li and ");//插入字符
    cout<<nu<<endl;//直接输出
    cout<<nu.substr(0,7)<<"."<<endl;//输出下标为0-7的子串
    nu.erase(nu.begin());//删除一个元素
    nu.erase(nu.begin(),nu.end()-11);//删除区间的所有元素
    cout<<nu<<endl;//直接输出
    return 0;
}

10.find(str):返回子串str的位置,结束标志-string::npos

11.replace(pos,len,str):从pos下标开始,将长度为len的子串替换为str

cpp 复制代码
#include <iostream>
#include <string>
using namespace std;
int main(){
    string str1="You are not a beauty!";
    string str2="beauty";
    string str3="a gorgeous ";
    if(str1.find(str2)!=string::npos)//找子串str2在主串中的位置
    cout<<str1.find(str2)<<endl;
    else cout<<"there is no such string!"<<endl;
    str1.replace(8,6,str3);//将下标从8开始,长度为6的子串替换为str3
    cout<<str1<<endl;
    return 0;
}

例题:

思路:输出结果=0.1+字符串的保留位+指数

考虑输入字符首位为0与非0小数两种情况

为0小数-去掉多余的0,(相当于将小数点右移)同时计算指数e--,直至移非0数前。

不为0小数-遍历下标去找小数点(相当于将小数点左移)同时计算指数e++,去掉小数点。

再根据保留位,记录字符串保留的字符

cpp 复制代码
#include <iostream>
#include <string>
using namespace std;
int n;
string rst(string s,int& x){
    int k=0;//下标
    int exat=0;//精度
    string str;
    if(s.length()==0) x=0;
    //去0、小数点,计算指数
    while(s.length()>0&&s[0]=='0'){//去0-0000.001=0.1e-2
        s.erase(s.begin());//去0
    }
    if(s[0]=='.'){//去0后为小数点:.001=0.1e-2
    s.erase(s.begin());
    x--;//小数点右移,直至到非0数前
    }else{//去0后不为小数点
    if(k<s.length()&&s[k]!='.'){//找小数点123.1=0.1e3
        k++;
        x++;//小数点左移,直至第一个数前
    }
    if(k<s.length())
    s.erase(s.begin()+k);//去掉小数点,s[k]即为小数点
    }
    //记录保留位:考虑到,当字符位小于要保留的位数时,要用0去补位
    k=0;
    while(exat<n){//直至精度==n退出
        if(k<s.length()) str+=s[k++];//拼接一个字符
        else str+='0';//超过补0
        exat++;//精度++
    }
    return str;
}
int main(){
    string s1,s2,s3,s4;
    int n1=0,n2=0;
    cin>>n>>s1>>s2;
    s3=rst(s1,n1);
    s4=rst(s2,n2);
    if(s3==s4&&n1==n2)
    cout<<"YES 0."<<s3<<"*10^"<<n1<<endl;
    else cout<<"NO 0."<<s3<<"*10^"<<n1<<" 0."<<s4<<"*10^"<<n2<<endl;
    return 0;
}
相关推荐
软件黑马王子11 分钟前
C#初级教程(4)——流程控制:从基础到实践
开发语言·c#
闲猫14 分钟前
go orm GORM
开发语言·后端·golang
计算机小白一个39 分钟前
蓝桥杯 Java B 组之设计 LRU 缓存
java·算法·蓝桥杯
万事可爱^1 小时前
HDBSCAN:密度自适应的层次聚类算法解析与实践
算法·机器学习·数据挖掘·聚类·hdbscan
黑不溜秋的1 小时前
C++ 设计模式 - 策略模式
c++·设计模式·策略模式
李白同学2 小时前
【C语言】结构体内存对齐问题
c语言·开发语言
黑子哥呢?3 小时前
安装Bash completion解决tab不能补全问题
开发语言·bash
青龙小码农3 小时前
yum报错:bash: /usr/bin/yum: /usr/bin/python: 坏的解释器:没有那个文件或目录
开发语言·python·bash·liunx
大数据追光猿3 小时前
Python应用算法之贪心算法理解和实践
大数据·开发语言·人工智能·python·深度学习·算法·贪心算法
Dream it possible!3 小时前
LeetCode 热题 100_在排序数组中查找元素的第一个和最后一个位置(65_34_中等_C++)(二分查找)(一次二分查找+挨个搜索;两次二分查找)
c++·算法·leetcode