C++ 中有没有 LONG转化STRING STRING 转化LONG 的库函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ 中有没有 LONG转化STRING STRING 转化LONG 的库函数相关的知识,希望对你有一定的参考价值。
注:除了ltoa atol
要直接转成 string 的
long转换为string的一个解决方案:
可以先用sprintf函数把long转换为char*,然后char*直接可以赋给string。
string转换为long的一个解决方案
先用string的成员函数c_str()转化为char*,再用sscanf函数将char*转为long。
sscanf和sprintf是C函数,头文件stdio.h,用法和scanf、printf相似 参考技术A 数字与字符相互转换,恩。。个人觉得数字->字符 如3D->2D 还是可行的,但如果是字符到数字,局限性还是挺大的,毕竟谁也不能保证string是只含数字字符的。如果真是从数字转为字符,自己写个函数就可以了。反过来的话,需要多考虑些限定。 你参考下以下的方法,希望对你有些帮助:
(转)
数字转字符串:
用C++的streanstream:
#include <sstream>
#Include <string>
string num2str(double i)
...
stringstream ss;
ss<<i;
return ss.str();
字符串转数字:
int str2num(string s)
...
int num;
stringstream ss(s);
ss>>num;
return num;
上面方法很简便, 缺点是处理大量数据转换速度较慢..
请教在C++里如何把string类型转换成long型?
不要依赖VC的库比如atoi?
可有什么好方法?
在c++中如果不采用这个函数的话,可以使用stringstream来转换,如下:
#include <sstream>
std::string str("123");
long num;
std::stringstream sstr;
sstr<<str;
sstr>>num;
sstr.clear();//下次转换之前必须调用这个
如果你使用boost库的话,会更简单一点:
#include <boost/lexical_cast.hpp>
string str("123");
long num=boost::lexical_cast<long>(str);
当然boost内部实现也是采用stringstream的方式转换的 参考技术A 自己写了.
long atoi(char *pch,int len)
long ret=0;
for(int i=0;i<len;i++)
if(pch[i]>='0'&&pch[i]<='9')
ret*=10;
ret+=(pch[i]-'0');
else
//此处是出错处理,给的字符中有非数字的字符.
break;
return ret;
参考技术B 可以直接调用c库函数atol() 参考技术C atol真的很好用哈!建议使用!
以上是关于C++ 中有没有 LONG转化STRING STRING 转化LONG 的库函数的主要内容,如果未能解决你的问题,请参考以下文章