当前位置 主页 > 网站技术 > 代码类 >

    C/C++字符串与数字互转的实现

    栏目:代码类 时间:2020-01-31 18:08

    C数字转字符串

    int sprintf(char *str, const char *format, ...);
    char c[10];
    sprintf(c, "%d", 15); // 将整数转换成字符串
    
    //浮点数转字符串,number为要转换的数,ndigit表示要转换的位数
    char *gcvt(double number, int ndigit, char *buf);
    //浮点数转字符串,number为要转换的数,ndigit表示要转换的位数, decpt和sign为输出参数,decpt为小数点位
    //数,sign为符号。返回转换后的字符串,不含符号和小数点。
    char *ecvt(double number, int ndigits, int *decpt, int *sign);
    //fcvt与ecvt不同在于fcvt的ndigit参数表示小数点后的长度
    char *fcvt(double number, int ndigits, int *decpt, int *sign); 
    
    

    C字符串转数字

    int sscanf(const char *str, const char *format, ...);
    char str[] = "15.455";
    int i;
    float fp;
    sscanf( str, "%d", &i ); // 将字符串转换成整数 i = 15
    sscanf( str, "%f", &fp ); // 将字符串转换成浮点数 fp = 15.455000
    
    int atoi(const char *nptr);
    long atol(const char *nptr);
    long long atoll(const char *nptr);
    
    
    double strtod(const char *nptr, char **endptr);
    float strtof(const char *nptr, char **endptr);
    long double strtold(const char *nptr, char **endptr);
    long int strtol(const char *nptr, char **endptr, int base);
    long long int strtoll(const char *nptr, char **endptr, int base);
    unsigned long int strtoul(const char *nptr, char **endptr, int base);
    unsigned long long int strtoull(const char *nptr, char **endptr, int base);
    
    

    C++字符串转数字

    C++11增加std::stoi/stol/stoll等等函数可以 转换

    C++数字转字符串

    C++11增加了全局函数std::to_string,以及std::stoi/stol/stoll等等函数

    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)
    
    
    
    

    string和char *互转

    string转char *或char []

    //1. 调string的data函数
    string s = "abc";  //data函数不会加结束符'\0' c_str会加
    char *p = s.data();
    
    //2. 调string的c_str函数
    string s = "abc";
    char *p = s.c_str();
    
    //3. 调string的copy函数
    string s = "abc";
    char p[10];
    s.copy(p, 3, 0); //复制3个字符,从0位置开始
    p[3] = '\0';  //需要手动加结束符
    
    

    char *或char []转string

    string s;
    char *p = "123";
    s = p; //直接复制即可

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持IIS7站长之家。