数据类型的转换

本文整理学习自,侵权请联系删除!

1.int转string

1.使用stringstream

 #include <sstream>
 #include <string>
 #include <iostream>
 using namespace std;
 int main()
 {
  	int m;
	stringstream ss;
	cin>>m;
    string str;
    ss<<m;
    ss>>str;
    cout<<str<<endl;
    return 0;
 }

注意:1.需要添加头文件#include <sstream>
2.stringstream流只能单次使用,即一次只能将一个int变量输入转为string变量输出,不可以重复使用。

2.to_string()

这个库函数适用于各种基本数据类型:int /long /long long / unsigned /unsigned long/unsigned long long/float /double/long double

string str=to_string(  其他数据类型:val )

2.string转换为其它数据类型

string -> int : atoi(str.c_str())  

//使用c标准库,需加头文件#include<stdlib.h>,不过最好使用后面介绍的C++库
string -> unsigned int : strtoul(str.c_str(),NULL,10)
string ->long long int: atoi(str.c_str())
string ->unsigned long long int : strtoull(str.c_str(),NULL,0)
string -> float / double : atof(str.c_str())
string -> long double : strtold(str.c_str())

注:
1.atoi(str.c_str()) 需加头文件#include<stdlib.h>
2.c_str()函数返回一个指向正规C字符串的指针,内容与本string串相同。这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。而且一定要使用strcpy()函数 等来操作方法c_str()返回的指针

//比如:最好不要这样:
char* c;
string s=1234;
c = s.c_str(); //c最后指向的内容是垃圾,因为s对象被析构,其内容被处理

//这样才不会出错,c_str()返回的是一个临时指针,不能对其进行操作
char c[20];
string s=1234;
strcpy(c,s.c_str());
//c++11标准引入的C++库函数
string str;
stoi(str)
stol(str)
stoul(str)
stoll(str)
stoull(str)
stof(str)
stod(str)
stold(str)

注:一般的话,用C++11标准中的 to_string()函数 和对应的 stoi() 等函数。不能用c++11标准的时候,用str.c_str() 结合atoi() 、atof() 函数来使string 转其他类型: 即int n=atoi(str.c_str()) ; double db=atof(str.c_str())。

3.字符数组和string的转换

#include<iostream>
#include<string>
using namespace std;
int main(){
	string str;
	char ch[]="abcdefg";
	str=ch;//字符数组直接当成string 类型的变量来操作即可
	cout<<str<<endl;


//2.string类型转化为字符数组类型
//需包含头文件#include<cstring>
	string str("abcdefg");
	char buf[10];
	strcpy(buf,str.c_str());
	cout<<buf[5]<<endl;
	return 0;
}           
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值