c++中int,string,char類型的相互轉換

首先要引入兩個文件

#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位;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章