1. 程式人生 > >C++中int、double、float。string等常見型別轉換

C++中int、double、float。string等常見型別轉換

1、各種型別之間的相互轉換的互相轉換

int型轉string

void int2str(const int &int_temp,string &string_temp)  
{  
        stringstream stream;  
        stream<<int_temp;  
        string_temp=stream.str();   //此處也可以用 stream>>string_temp  
}
double 型轉string
void double2str(double &double_temp,string &string_temp)
{
	stringstream stream;
	stream<<double_temp;
	string_temp=stream.str();
}
string 型轉 double
void str2double(double &double_temp,string &string_temp)
{
	stringstream stream;
	stream<<string_temp;
	stream>>double_temp;
}

string型轉int型

void str2int(int &int_temp,const string &string_temp)  
{  
    stringstream stream(string_temp);  
    stream>>int_temp;  
}  
只需要一個函式既可以搞定,atoi()函式主要是為了和C語言相容而設計的,函式中將string型別轉換為C語言的char陣列型別作為atoi函式的實參,轉化後是int型。
int n; char *str = "12345.67"; n = atoi(str);

float型與string型的轉換

建議同樣適用流的方法,只要把前面函式中int改為float就可以了。此外還有gcvt函式可以實現浮點數到字串的轉換,atof()函式則實現把字串轉換為浮點數。使用方法如下:

  1. float num;  
  2. string str="123.456";  
  3. num=atof(str.c_str()); 

  1. double num=123.456;  
  2. string str;  
  3. char ctr[10];  
  4. gcvt(num,6,ctr);  
  5. str=ctr; 
其中num預設為double型別,如果用float會產生截斷。6指的是保留的有效位數。ctr作為第三個引數預設為char陣列來儲存轉換後的數字。該函式在VS下編譯時同樣會提示該函式不提倡使用。最後一行將ctr直接轉換為str。