C/C++ 字符串与数字相互转换

一.利用stringstream类

1. 字符串到整数

stringstream sstr(str);

int x;

sstr >> x;(即从sstr中提取数据)
2. 整数到字符串

stringstream sstr;

int x;

sstr << x;

string str = sstr.str();

缺点:处理大量数据转换速度较慢。stringstream不会主动释放内存,如果要在程序中用同一个流,需要适时地清除一下缓存(用stream.str("")和stream.clear()).

测试代码:

经测试,两者速率确实差很多。

当num为10000000时,输出结果为:

82602

7144

二.C中的sprintf、sscanf函数

1. 可以用sprintf函数将数字转换成字符串

例如:

int H, M, S;

string time_str;

H=seconds/3600;

M=(seconds%3600)/60;

S=(seconds%3600)%60;

char ctime[10];

sprintf(ctime, "%d:%d:%d", H, M, S); // 将整数转换成字符串

time_str=ctime; // 结果

2. 与sprintf对应的是sscanf函数, 可以将字符串转换成数字

char str[] = "15.455";

int i;

float fp;

sscanf( str, "%d", &i ); // 将字符串转换成整数 i = 15

sscanf( str, "%f", &fp ); // 将字符串转换成浮点数 fp = 15.455000

//打印

printf( "Integer: = %d ", i+1 );

printf( "Real: = %f ", fp+1 );

return 0;

输出如下:

Integer: = 16

Real: = 16.455000

三.C标准库atoi, atof, atol, atoll(C++11标准) 函数将字符串转换成int,double, long, long long 型

1. itoa函数

char *itoa(int value, char *string, int radix);

value: 待转化的整数。

radix: 是基数的意思,即先将value转化为radix进制的数,范围介于2-36,比如10表示10进制,16表示16进制。

* string: 保存转换后得到的字符串。

返回值:

char * : 指向生成的字符串, 同*string。

备注:该函数的头文件是"stdlib.h"

2. atoi

  C语言库函数名: atoi

  功 能: 把字符串转换成整型数

  函数说明: atoi()会扫描参数nptr字符串,检测到第一个数字或正负符号时开始做类型转换,之后检测到非数字或结束符 \0 时停止转换,返回整型数。

  原型: int atoi(const char *nptr);

  需要用到的头文件: #include <stdlib.h>

时间: 2024-11-03 03:46:41

C/C++ 字符串与数字相互转换的相关文章

vb 字符串和数字相互转换函数

VB中的字符串函数比较多,也比较方便,就不一一介绍了.本文主要对字符串相关的转换函数做一些小结.字符串转换的函数主要有: Str()和Val()用于字符串和数字的相互转换; Chr()和Asc()用于字符串和AscII码的相互转换; Chrw()和Ascw()用于Unicode码和中文的相互转换; Format()函数用途十分广泛的一个函数,功能十分强大. 在这些函数中前两对和Format()函数是我们经常用到的,这里只给出前两对的几个简单例子: (1) MyString = Str(-459.

C/C++中字符串与数字相互转换

sprintf int sprintf( char *buffer, const char *format, [ argument] … ); buffer:char型指针,指向将要写入的字符串的缓冲区. format:格式化字符串. [argument]...:可选参数,可以是任何类型的数据. 把某个格式化的数据写入字符缓冲区中 sscanf int sscanf(const char *buffer,const char *format,[argument ]...); buffer:存储的

Swift入门(九)——String与Int、Double、Float等数字相互转换

三种转换模式 任何语言里面,Int.float.double等数字类型自成一派,但它们和String类型之间的转换总是不太方便,这里总结一下它们相互转换的方法.总结下来一共有三种转换模式,分别举例说明. 一.String转数字 这里以String类型转Int类型为例.String转其他的数字类型(Float.Double等)大同小异.主要用到的方法是String类型的toInt方法.注意这个方法返回的是Int?,即一个整数可选类型.所以需要解封. var string = "1234"

10天精通Sass 之 处理字符串与数字的函数

Sass的函数简介 Sass中自备了一系列的功能函数,包括: - 字符串函数 - 数字函数 - 列表函数 - 颜色函数 - Introspection函数 - 三元函数 除了Sass中已提供的函数,我们还可以根据自己的需求定义函数,称为自定义函数. 字符串函数 * unquote($string) * :删除字符串中的引号 * quote($string) * :给字符串加引号 unquote()函数 用来删除字符串的引号,如果这个字符串没有引号,则返回原始字符串. .test1 { conte

数字转字符串及字符串转数字

头文件:#include<cstdio> 1.字符串数字之间的转换 (1)string --> char *   string str("OK");   char * p = str.c_str(); (2)char * -->string   char *p = "OK";   string str(p); (3)char * -->CString    char *p ="OK";   CString m_Str

判断字符串是不是数字

NumberUtils.isNumber(str)判断字符串是不是数字或者能不能转换成数字 public class StringIsNumber { public static void main(String[] args) { Scanner s = new Scanner(System.in); String str = s.nextLine(); if(NumberUtils.isNumber(str)){ System.out.println("输入的是数字"); }els

jquery.easyui.min.js, 行82 字符5SCRIPT1028: 缺少标识符、字符串或数字

在火狐里面显示正常啊?放到IE里面测试就出错了 行82 字符5SCRIPT1028: 缺少标识符.字符串或数字: 还以为是哪里的标点没写完整 ..找了半天原来是datagrid 的抬头里面夹杂着注释导致的,IE真的是狠严(ruo)格(zhi)啊

shell中if条件字符串、数字比对,[[ ]]和[ ]区别

shell中if条件字符串.数字比对,[[ ]]和[ ]区别 引用: http://www.51testing.com/?uid-7701-action-viewspace-itemid-13731 http://blog.csdn.net/sunboy_2050/article/details/6836382 shell 括号 学习shell的时候总是被shell里的条件判断方式搞得头疼,经常不知道改 用[],[[]],(())还是test,let,而很少有书把它们的关系讲解的很清楚(应该是我

php陷阱:字符串和数字比较

PHP中的比较运算符有点诡异,很容易出错,现列出比较规则: 1.当两个字符进行大小比较时,是比较着这两个字符的ASCII码大小——这条很容易理解. 2.当两个字符串进行大小比较时,是从第一个字符开始,分别比教对应的ASCII大小,只要从从某个对应位置开始,其中一个字符串的当前位置字符大于另一个字符串对应位置字符,即直接判别出这两个字符串大小,如'ba'>'az'——这条其实大家也都知道的. 那么'10'与'a'比较呢,当然还是一样的啦,首先将'1'和'a'ASCII码进行比较,'a'大. 3.当