1. 程式人生 > 其它 >c和c++字串和數字轉換介面總結

c和c++字串和數字轉換介面總結

技術標籤: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);

string to_string (long 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 引用的位置。

引數:

  1. str 需要轉換的字串
  2. 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;
}