string和数值相互转换
string str8='3.14159";
f=stof(str8);
int i=1234;
string str7=to_string(i);
string的输出和输入
方案一:继续用scanf和printf
string->char
char arr[100];
scanf("%s",arr);
string str9;
str9=arr;
printf("str9=%s\n"str9.c_str());//输出要用c_str;
方案二 不推荐
cin和cout
string str10;
cin>>str10;
cout<<"str10="<<str10<<"\n";//性能差
例题 浮点数zz
#include <iostream>
#include <string>
using namespace std;
int main(){
string a,b;
while(getline(cin,a)){
getline(cin,b);
int pos1=a.find('.');
int pos2=b.find('.');
if(pos1>pos2){ //a的小数点比较靠后
b.insert(0,pos1-pos2,'0'); //整数部分前面填0
}
else{
a.insert(0,pos2-pos1,'0');
}
if(a.length()>b.length()){
b.insert(b.length(),a.length()-b.length(),'0');
}
else{
a.insert(a.length(),b.length()-a.length(),'0');
}
int carry=0;
for(int i=a.length()-1;i>=0;i--){
if(a[i]=='.')
continue;
a[i]=a[i]+b[i]+carry-'0';
carry=(a[i]-'0')/10;
a[i]=(a[i]-'0')%10+'0';
}
if(carry!=0){
a.insert(0,1,'1');
}
cout<<a<<endl;
}
}
#include<iostream>
using namespace std;
#include <string>
#include <bits/stdc++.h>
int main(){
int n;
scanf("%d",&n);
char a[1000];
int count;
while(n--){
scanf("%s",a);
count=0;
string arr=a;
for(int i=0;i<arr.size();i++){
if(arr[i]=='0')
printf("%c",arr[i]);
else{
int j=i+1;
count=1;
while(arr[i]==a[j]&&j<arr.size()){
j++;
count++;
if(count==5)
{
printf("11111");
i=j;
break;
}
}
if(count!=5) printf("%c",arr[i]);
}
}
printf("\n");
}
}
大整数排序
#include <iostream>
using namespace std;
#include <string>
#include <algorithm>
string str[100];
bool compare(string a,string b){
if(a.size()!=b.size())
{
return a.size()<b.size();
}
return a<b;
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>str[i];
}
sort(str,str+n,compare);
for(int i=0;i<n;i++){
cout<<str[i]<<'\n';
}
}
11