C++ 中有没有 LONG转化STRING STRING 转化LONG 的库函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ 中有没有 LONG转化STRING STRING 转化LONG 的库函数相关的知识,希望对你有一定的参考价值。

注:除了ltoa atol
要直接转成 string 的

没有long和string互相转换的,但是有long(还有int,double,float等)和char*互相转化的函数,sprintf函数和sscanf函数。因此可以用char*作为中间类型
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?
可有什么好方法?

首先,atoi并不是vc的库,是标准c的一个库函数
在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 的库函数的主要内容,如果未能解决你的问题,请参考以下文章

c和c++如何把一个整数转化为string

C++ string 转化为LPCTSTR

C/C++基本问题:字符串转化为long型数字

c++中一个long类型数据转换成IP地址

如何将C++中string类型的字符串赋给unsigned char数组

C++ string如何转换为BSTR类型