C++字符串转数字,数字转字符串
1. 字符串转数字
如将“32”转为32,将“3.1415”转为3.1415,将“567283”转为567283。使用:
//Convert string to integer, more @http://www.cplusplus.com/reference/clibrary/cstdlib/atoi/
int atoi ( const char * str );
//Convert string to double, more @http://www.cplusplus.com/reference/clibrary/cstdlib/atof/
double atof ( const char * str );
// Convert string to long integer,more @http://www.cplusplus.com/reference/clibrary/cstdlib/atol/
long int atol ( const char * str );
//Read formatted data from string, more @http://www.cplusplus.com/reference/clibrary/cstdio/sscanf/
int sscanf ( const char * str, const char * format, ...);
Example1:
/* atoi,atof,atol example */
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int a;float b;long c;
a=atoi("32");
b=atof("3.1415");
c=atol("567283");
printf ("%d,%f,%d",a,b,c);
return 0;
} Output:
32,3.141500,567283
Example2:
/* sscanf example */
#include <stdio.h>
int main ()
{
int a;float b;long c;
sscanf ("32,3.1415,567283","%d,%f,%d",&a,&b,&c);
printf ("%d,%f,%d",a,b,c);
return 0;
} Output:
32,3.141500,567283
2. 数字转字符串
如将32转为“32”,将3.1415转为“3.1415”,将567283转为“567283”。使用:
//Write formatted data to string, more @http://www.cplusplus.com/reference/clibrary/cstdio/sprintf/
int sprintf ( char * str, const char * format, ... );
//Convert integer to string (non-standard function), more @http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/
//This function is not defined in ANSI-C and is not part of C++, but is supported by some compilers.
//A standard-compliant alternative for some cases may be sprintf.
char * itoa ( int value, char * str, int base );
Example3:
Example3 /* sprintf example */
#include <stdio.h>
int main ()
{
char a[10],b[10],c[10];
sprintf(a, "%d", 32);
sprintf(b, "%f", 3.1415);
sprintf(c, "%d", 567283);
printf("%s,%s,%s",a,b,c);
return 0;
} Output:
32,3.141500,567283
3. 使用stringstream进行字符串与数字的转换
这里给出一个例子,更多 @http://www.cppblog.com/Sandywin/archive/2008/08/27/27984.html,http://blog.csdn.net/touzani/article/details/1623850
Example4:
Example4 // using stringstream constructors.
#include <iostream>
#include <sstream>
using namespace std;
int main ()
{
int a;float b;long c;
char d[10],e[10],f[10]; /* string to number */
stringstream ss;
ss << "32";
ss >> a;
ss.clear(); ss << "3.1415";
ss >> b;
ss.clear(); ss << "567283";
ss >> c;
ss.clear(); cout<<a<<","<<b<<","<<c<<endl; /* number to string */
ss << a;
ss >> d;
ss.clear(); ss << b;
ss >> e;
ss.clear(); ss << c;
ss >> f;
ss.clear(); cout<<d<<","<<e<<","<<f<<endl; return 0;
} Output:
32,3.141500,567283
32,3.141500,567283
小结:C++标准库中的<sstream>提供了比ANSI C的<stdio.h>更高级的一些功能,即单纯性、类型安全和可扩展性,可以使用这些库来实现安全和自动的类型转换。言下之意就是,使用stringstream进行字符串与数字的转换是更好的选择。
C++字符串转数字,数字转字符串的更多相关文章
- 写出将字符串中的数字转换为整型的方法,如:“as31d2v”->312,并写出相应的单元测试,正则去掉非数值、小数点及正负号外的字符串
写出将字符串中的数字转换为整型的方法,如:"as31d2v"->312,并写出相应的单元测试,输入超过int范围时提示不合法输入. public struct Convert ...
- Python 判断字符串是否为数字
转载: http://www.runoob.com/python3/python3-check-is-number.html 以下实例通过创建自定义函数 is_number() 方法来判断字符串是否为 ...
- Oracle 把秒转成时分秒格式(hh24:mm:ss);检测字符串是否是数字;字符串转换为数字
不说废话,贴代码: CREATE OR REPLACE FUNCTION to_time(sec IN NUMBER) RETURN VARCHAR2 IS /*把秒转成时分秒格式 auth lzpo ...
- C#判断字符串是否是数字
/// <summary> /// 判断字符串是否是数字 /// </summary> public static bool IsNumber(string s) { if ( ...
- Java--正则表达式-简单的在字符串中找数字
import org.junit.Test; import java.util.regex.Matcher; import java.util.regex.Pattern; public class ...
- SQL Server 2008 R2——创建函数 筛选出字符串中的数字 筛选出字符串中的非数字
=================================版权声明================================= 版权声明:本文为博主原创文章 未经许可不得转载 请通过右 ...
- Asp.net,C# 纯数字加密解密字符串
也就是说加密后的数据不再是:N8lAaHMFtSAQgaf3+RUFng== 希望encryptedString是"1203877893704809384098328409234923840 ...
- 将字符串转化为数字(Convert和Parse的用法)
字符串必须是数字,不要超过转换成目标数字类型的范围.超过的话系统也会报错(溢出). static void Main(string[] args) { string s; int i; Console ...
- 验证一个字符串是否由数字组成(Java)
public class StringDemo{ public static void main(String args[]){ String str ="12343264sd6223&qu ...
- Excel中如何提取字符串中的数字
取字符串中的数字,假如数据在A列,提取公式为 =LOOKUP(9^9,--MID(A1,MIN(FIND({1,2,3,4,5,6,7,8,9,0},A1&5^19)),ROW($1:$99) ...
随机推荐
- shell脚本中使用echo显示带颜色的内容
shell脚本中使用echo显示带颜色的内容,需要使用参数-e 格式如下: echo -e "\033[字背景颜色;文字颜色m字符串\033[0m" 例如: echo -e &qu ...
- PAT Basic 1042
1042 字符统计 请编写程序,找出一段给定文字中出现最频繁的那个英文字母. 输入格式: 输入在一行中给出一个长度不超过 1000 的字符串.字符串由 ASCII 码表中任意可见字符及空格组成,至少包 ...
- 图论trainning-part-1 A. 最短路
A. 最短路 Time Limit: 1000ms Memory Limit: 32768KB 64-bit integer IO format: %I64d Java class name ...
- SPOJ - Distinct Substrings,求不同的字串个数!
DISUBSTR - Distinct Substrings 题意:给你一个长度最多1000的字符串,求不相同的字串的个数. 思路:一个长度为n的字符串最多有(n+1)*n/2个,而height数组已 ...
- log日志,crontab
定期备份mysql的log日志文件,保留一个月 将文件压缩为gzip格式,节省空间,备份到/home/shell/myqsl_back/目录下,保留一个月mysql_backup备份的脚本 #!/bi ...
- JSPatch安全部署
前言 这个事JSPatch集成到客户端的第二篇,第一篇链接:http://www.cnblogs.com/hxwj/p/5163158.html 安全部署链接:http://blog.cnbang.n ...
- 【Luogu】P3414组合数(快速幂)
题目链接 从n的元素中选零个,选一个,选两个,选三个...选n个的方案数和,其实就是n个元素中取任意多个元素的方案数,那对于每一个元素,都有取或不取两种情况,所以方案数最终为2^n个. #includ ...
- 刷题总结——道路覆盖(ssoj)
题目: 题目描述 Tar 把一段凹凸不平的路分成了高度不同的 N 段(每一段相同高度),并用 H[i] 表示第 i 段高度.现在 Tar 一共有 n 种泥土可用,它们都能覆盖给定的连续的 k 个部分. ...
- 算法复习——网络流模板(ssoj)
题目: 题目描述 有 n(0<n<=1000)个点,m(0<m<=1000)条边,每条边有个流量 h(0<=h<35000),求从点 start 到点 end 的最 ...
- eclipse导入svn检出的maven项目问题
1.修改项目jdk环境和编译环境.消除红叉. 2.windows-preferences-java-installed jres,修改工作空间的jdk,在Default vm arguments栏中添 ...