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;
}