c/c++ 数字转成字符串, 字符串转成数字
2013-12-19 00:32
183 查看
数字转字符串:
用C++的streanstream:
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
#include <sstream>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
#Include <string>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
string num2str(double i)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
stringstream ss;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
ss<<i;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
return ss.str();
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif)
}
字符串转数字:
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
int str2num(string s)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
int num;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
stringstream ss(s);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
ss>>num;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
return num;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif)
}
上面方法很简便, 缺点是处理大量数据转换速度较慢..
C library中的sprintf, sscanf 相对更快
可以用sprintf函数将数字输出到一个字符缓冲区中. 从而进行了转换...
例如:
已知从0点开始的秒数(seconds) ,计算出字符串"H:M:S", 其中H是小时, M=分钟,S=秒
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
int H, M, S;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
string time_str;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
H=seconds/3600;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
M=(seconds%3600)/60;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
S=(seconds%3600)%60;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
char ctime[10];
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
sprintf(ctime, "%d:%d:%d", H, M, S); // 将整数转换成字符串
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
time_str=ctime; // 结果
与sprintf对应的是sscanf函数, 可以将字符串转换成数字
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
char str[] = "15.455";
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
int i;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
float fp;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
sscanf( str, "%d", &i ); // 将字符串转换成整数 i = 15
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
sscanf( str, "%f", &fp ); // 将字符串转换成浮点数 fp = 15.455000
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//打印
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
printf( "Integer: = %d ", i+1 );
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
printf( "Real: = %f ", fp+1 );
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
return 0;
输出如下:
Integer: = 16
Real: = 16.455000
Original URL: http://blog.csdn.net/touzani/article/details/1623850
用C++的streanstream:
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
#include <sstream>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
#Include <string>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
string num2str(double i)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
stringstream ss;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
ss<<i;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
return ss.str();
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif)
}
字符串转数字:
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
int str2num(string s)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
int num;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
stringstream ss(s);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
ss>>num;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
return num;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif)
}
上面方法很简便, 缺点是处理大量数据转换速度较慢..
C library中的sprintf, sscanf 相对更快
可以用sprintf函数将数字输出到一个字符缓冲区中. 从而进行了转换...
例如:
已知从0点开始的秒数(seconds) ,计算出字符串"H:M:S", 其中H是小时, M=分钟,S=秒
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
int H, M, S;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
string time_str;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
H=seconds/3600;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
M=(seconds%3600)/60;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
S=(seconds%3600)%60;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
char ctime[10];
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
sprintf(ctime, "%d:%d:%d", H, M, S); // 将整数转换成字符串
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
time_str=ctime; // 结果
与sprintf对应的是sscanf函数, 可以将字符串转换成数字
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
char str[] = "15.455";
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
int i;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
float fp;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
sscanf( str, "%d", &i ); // 将字符串转换成整数 i = 15
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
sscanf( str, "%f", &fp ); // 将字符串转换成浮点数 fp = 15.455000
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//打印
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
printf( "Integer: = %d ", i+1 );
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
printf( "Real: = %f ", fp+1 );
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
return 0;
输出如下:
Integer: = 16
Real: = 16.455000
Original URL: http://blog.csdn.net/touzani/article/details/1623850
相关文章推荐
- c++任意数字转换为字符串
- C++之String的find方法,查找一个字符串在另一个字符串的什么位置;leveldb字符串转数字解析办法
- c++实验5--统计输出字符串中(大/小写)字母个数,数字个数及其它字符个数。
- C++ 数字转字符串
- C++中数字与字符串之间的转换
- C++对带有分隔符的字符串 分割为数字的通用解决方案
- c++ 判断字符串只包含字母、数字、汉字
- C C++ 数字与字符串的转化
- C++ 数字转字符串
- c/c++ 数字转字符串, 字符串转数字
- C++字符串转数字,数字转字符串
- c/c++ 数字转成字符串, 字符串转成数字
- 【c++】字符串中找出最长的连续数字字符串
- C++实现字符串中数字字串求和
- C++中数字与字符串之间的转换
- C++字符串转化为数字的库函数
- C++字符串类型和数字之间的转换
- C++数字,数组,字符串
- C/C++中字符串与数字相互转换
- C++下的数字和字符串间的转换