string to number
在C++编程当中,我们经常会遇到需要将数字与字符串相互转换的情况。
C++的标准库函数里面只提供了大量的从string to number的方法
String conversion | 定义点这里 |
---|---|
atof | Convert string to double |
atoi | Convert string to integer |
atol | Convert string to long integer |
atoll | Convert string to long long integer |
strtod | Convert string to double |
strtof | Convert string to float |
strtol | Convert string to long integer |
strtold | Convert string to long double |
strtoll | Convert string to long long integer |
strtoul | Convert string to unsigned long integer |
strtoull | Convert string to unsigned long long integer |
他们的用法也非常简单,很容易掌握。
number to string
但是如果想要将number转换成string,就麻烦了,网上大量的方法都是使用itoa()函数,但问题是,itoa()并不在c++的标准库当中,虽然大多数的compiler都支持,但是偶尔也会有compiler不认的情况。。比如我就遇到了。。
那么c++标准库函数当中有没有方法能实现number到string的转换呢?
答案就是这个函数:
int sprintf ( char * str, const char * format, … );
他能够将自定义好格式的数据写入一个string,如何自定义格式呢?
我想只要是会用printf()函数的同学都应该知道。
举个例子:当我们想要输出一个数字时
#include <stdio.h>
int main()
{
printf ("%d\n", 65);
return 0;
}
上面的代码中,第一个参数就是自定义格式,而他事实上也是将整数65转化成了string并输出到屏幕上,可惜的是,该string并没有保存下来,我们也无法对其进行进一步的操作。
这个时候,我们就需要用到 sprintf() 函数了,他能够将printf()函数得到的 string 保存下来。通过这种方法,我们事实上就完成了 number to string 的操作。
#include <stdio.h>
int main ()
{
char buffer [10];
sprintf (buffer, "%d\n", 65);
printf ("%s\n",buffer);
return 0;
}
事实上,他能做到的事情远不止这么多。
如果你有兴趣,可以好好了解下,format参数的格式。