c和c++字符串和数字转换接口总结

19 篇文章 1 订阅

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;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值