使用stringstream
1.数字转向字符串
举个栗子:
#include<sstream>//stringstream要使用到的头文件
#include<string>
#include<iostream>
using namespace std;
int main(){
double a=123.456;
string res;
stringstream aa;//定义流aa
aa<<a; //将数字a转化为流aa
aa>>res; //将流aa转化为字符串res
for(int i=0;i<res.length();i++){
cout<<res[i]<<endl; //输出
}
return 0;
}
其输出的结果:
2. 字符串转数字
步骤和上面相似,还是 举个栗子:
#include<sstream>
#include<string>
#include<iostream>
using namespace std;
int main(){
double a;
string res = "123.456";
stringstream aa;
aa << res;
aa >> a;
cout << a << endl;
return 0;
}
其输出的结果:
这里还可以包装一个方法transform:
#include<sstream>//stringstream要使用到的头文件
#include<string>
#include<iostream>
using namespace std;
string transform(int num);
int main(){
double a=123.456;
string res;
stringstream aa;//定义流aa
aa<<a; //将数字a转化为流aa
aa>>res; //将流aa转化为字符串res
for(int i=0;i<res.length();i++){
cout<<res[i]<<endl; //输出
}
cout<<"-------------"<<endl;
string res1=transform(123);
for(int i=0;i<res1.length();i++){
cout<<res1[i]<<endl; //输出
}
cout<<"-------------"<<endl;
string res2=transform(9);
for(int i=0;i<res2.length();i++){
cout<<res2[i]<<endl; //输出
}
return 0;
}
//此处包装了一个方法,将一位的数字转化成两位的字符串
//0->"00" 1->''01"
string transform(int num){
string res1;
stringstream ss;
ss<<num;
ss>>res1;
if(num<10){
res1="0"+res1;
}
return res1;
}
使用sprintf()函数和sscanf()函数
- sprintf()用于将数字转化为字符串
#include<bits/stdc++.h>
using namespace std;
int main(){
char str[10];
int a=1234567;
//将整数转化为字符串
sprintf(str,"%d",a);
int len = strlen(str);
cout << "字符串:"<< str << endl;
cout << "长度:" << len << endl;
cout << "------------------" << endl;
char str1[10];
double b=123.567;
//将浮点数转化为字符串
sprintf(str1,"%.3f",b);//.3f是设置格式,不然字符串会变为123.567000
int len1 = strlen(str1);
cout << "字符串:"<< str1 << endl;
cout << "长度:" << len1 << endl;
return 0;
}
结果:
2.sscanf()用于将字符串转化为数字
#include <iostream>
#include <string>
using namespace std;
int main()
{
char str[]="1234321";
int a;
sscanf(str,"%d",&a);
cout<<a<<endl;
char str1[]="123.321";
double b;
sscanf(str1,"%lf",&b);
cout<<b<<endl;
return 0;
}
结果:
除上面功能外,sprintf()还能实现对多个字符串的连接:
#include <stdio.h>
int main(int argc, char *argv[]) {
char str[100]; //定义缓存区
char str1[] = "str1";
char str2[] = "str2";
char str3[] = "str3";
sprintf(str, "%s%s%s", str1, str2, str3);
printf("%s", str); //将buffer打印出来
return 0;
}
努力成为一名改变世界的 码农 软件工程师,每天都要加油💪!