c和c++字串和數字轉換介面總結
c++的數字轉string:
to_string需要c++11支援
函式原型:
string to_string (int val);
string to_string (long val);
string to_string (long long val);
string to_string (unsigned val);
string to_string (unsigned long val);
string to_string (unsigned long long val);
string to_string (float val);
string to_string (double val);
例:
int main()
{
string pi = "pi is " + std::to_string(3.1415926);
string perfect = to_string(1 + 2 + 4 + 7 + 14) + " is a perfect number";
cout << pi << endl;
cout << perfect << endl;
return 0;
}
輸出結果:
c++的string轉數字(多介面):
stoi(s,p,b) 把字串s從p開始轉換成b進位制的int
stol(s,p,b) 把字串s從p開始轉換成b進位制的long
stoul(s,p,b) 把字串s從p開始轉換成b進位制的unsigned long
stoll(s,p,b) 把字串s從p開始轉換成b進位制的long long
stoull(s,p,b) 把字串s從p開始轉換成b進位制的unsigned long long
stof(s,p) 把字串s從p開始轉換成float
stod(s,p) 把字串s從p開始轉換成double
stold(s,p) 把字串s從p開始轉換成long double
例:
int main()
{
string strs = "22413.456";
cout << stoi(strs, 0, 10) << endl;
cout << stol(strs, 0, 10) << endl;
cout << stof(strs, 0) << endl;
cout << stod(strs, 0) << endl;
return 0;
}
輸出結果:
C語言char *轉數字:
需要標頭檔案#include<stdlib.h>
int atoi(const char *str) 將字串str轉為整數
double strtod(const char *str, char **endptr)
功能:C 庫函式 double strtod(const char *str, char **endptr) 把引數 str 所指向的字串轉換為一個浮點數(型別為 double 型)。如果 endptr 不為空,則指向轉換中最後一個字元後的字元的指標會儲存在 endptr 引用的位置。
引數:
- str 需要轉換的字串
- endptr 對型別為 char* 的物件的引用,其值由函式設定為 str 中數值後的下一個字元
例:
int main()
{
int val;
char str[20];
strcpy(str, "98993489");
val = atoi(str);
printf("字串值 = %s, 整型值 = %d\n", str, val);
strcpy(str, "runoob.com");
val = atoi(str);
printf("字串值 = %s, 整型值 = %d\n", str, val);
strcpy(str, "123.456");
printf("字串值:%s, double型別值:%lf\n", str, strtod(str, NULL));
char str1[30] = "20.30300 This is test";
char *ptr;
double ret;
ret = strtod(str1, &ptr);
printf("數字(double)是 %lf\n", ret);
printf("字串部分是 |%s|\n", ptr);
return 0;
}
輸出結果:
C語言數字轉char *
C語言提供了幾個標準庫函式,可以將任意型別(整型、長整型、浮點型等)的數字轉換為字串,下面列舉了各函式的方法及其說明。
● itoa():將整型值轉換為字串。(大部分編譯器不支援)
char* itoa(int value,char*string,int radix);//value: 要轉換的整數,string: 轉換後的字串,radix: 轉換進位制數,如2,8,10,16 進位制等。
● ltoa():將長整型值轉換為字串。
● ultoa():將無符號長整型值轉換為字串。
● gcvt():將浮點型數轉換為字串,取四捨五入。
● ecvt():將雙精度浮點型值轉換為字串,轉換結果中不包含十進位制小數點。
char *gcvt(double number, size_t ndigits, char *buf);
功 能: 把一個浮點數轉換為字串
用 法: char *fcvt(double value, int ndigit, int *decpt, int *sign);
引數:
value:要轉換的浮點數,輸入引數
ndigit:小數點後面的位數,輸入引數
decpt:表示小數點的位置,輸出引數
sign:表示符號,0為正數,1為負數,輸出引數
● fcvt():指定位數為轉換精度,其餘同ecvt()。
int main()
{
char *string;
double value;
int dec, sign;
int ndig = 10;
value = 9.876;
string = ecvt(value, ndig, &dec, &sign);
printf("string = %s dec = %d sign = %d\n", string, dec, sign);
value = -123.45;
ndig= 15; //總共輸出多少位
string = ecvt(value,ndig,&dec,&sign);
printf("string = %s dec = %d sign = %d\n",string, dec, sign);
value = 0.6789e5; /* scientificnotation */
ndig = 5;
string = ecvt(value,ndig,&dec,&sign);
printf("string = %s dec = %d sign = %d\n", string, dec, sign);
return 0;
}