首先要引入兩個文件
#include<sstream>
#include<string>
以下爲轉換實例:
1.char轉換爲string
1:)char*型
char* a1 = "123";
string a2(a1);
//cout << a2<<endl;
2)char型
char c[] = "we123";
string str;
stringstream stream;
stream << c;
str = stream.str();
//cout << str <<endl;
2.string轉換爲char型
1)轉換爲char
char d[20];
string d1="1234";
strcpy(d,d1.c_str());
cout << d<<endl;
//這樣纔不會出錯,c_str()返回的是一個臨時指針,不能對其進行操作
2)轉換爲char*
//c_str() 以 char* 形式傳回 string 內含字符串
//如果一個函數要求char*參數,可以使用c_str()方法:
string s = "Hello World!";
const char *d2 = s.c_str();
cout << d2<<endl;
3.int(float)轉換爲string
float a = 1324.5;
string res;
stringstream ss;
ss<<a;
ss>>res;//將float a轉換爲string res
4.string轉換爲int(float)
string res="1324.5";
int b;
stringstream ss2;
ss2<<res;
ss2>>b;//將string res轉換成int b=1324(如果轉爲float就是1324.5)
//cout << b<<endl;
5.int和char之間的轉換
int轉換成char,可以先把int轉爲string再轉爲char
char轉換爲int
char c[] = "123";
int aa;
stringstream stream;
stream << c;
stream >> aa;
cout << aa << endl;
補充說明幾點:
關於帶符號與無符號類型:整型 int、stort 和 long 都默認爲帶符號型。要獲得無符號型則必須制定該類型爲unsigned,比如unsigned long。unsigned int類型可以簡寫爲unsigned,也就是說,unsigned後不加其他類型說明符就意味着是unsigned int。
一字節表示八位,即:1byte = 8 bit;
int: 4byte = 32 bit 有符號signed範圍:2^31-1 ~ -2^31即:2147483647 ~ -2147483648無符號unsigned範圍:2^32-1 ~ 0即:4294967295 ~ 0
long: 4 byte = 32 bit 同int型
double: 8 byte = 64 bit 範圍:1.79769e+308 ~ 2.22507e-308
long double: 12 byte = 96 bit 範圍: 1.18973e+4932 ~ 3.3621e-4932
float: 4 byte = 32 bit 範圍: 3.40282e+038 ~ 1.17549e-038
int、unsigned、long、unsigned long 、double的數量級最大都只能表示爲10億,即它們表示十進制的位數不超過10個,即可以保存所有9位整數。而short只是能表示5位;