Linux 下 C++如何将string 转为 int

RT:例子:string str = "asdfasdgsg";
谢谢!
这是为了RSA加密用的……

用atoi函数,例如:

string str = "asdfasdgsg";

int i = atoi(str.c_str());

转换后,i结果为0

可以用man atoi查看相关库函数,如:

追问

为零怎么办?

追答

字符串里面没有数字,转换出来就是零啊!

追问

我RSA加密,要把文本转为数字啊!

追答

我猜你要的不是把"123"转成整形的123吧,而是对应的二进制流,比如:
abcdef123456 ==> 0xAB CD EF 12 34 56这样吧?

追问

是的,可以将asdfasfasdf等转为二进制,再用二进制来操作,请问怎么转?谢谢

追答typedef unsigned char       BYTE;

unsigned char z_H2C(char c)
{
    if (c>='a' && c<='f')
        return c-'a'+10;
    if (c>='A' && c<='F')
        return c-'A'+10;
    if (c>='0' && c<='9')
        return c-'0';
    return 0;
}

BYTE* Str2BIN(const char* sStr, BYTE * bBIN,int nBINLen)
{
    memset(bBIN,0,nBINLen);
    int nLen = strlen(sStr);
    for(int i=0;i<nLen;i+=2)
    {
        *(bBIN+i/2) = z_H2C(sStr[i])*16+z_H2C(sStr[i+1]);
    }
    return bBIN;


 //使用方法 
 char *pText = "abcd1234";
 int iLen            = strlen(pText) / 2 ;
 BYTE ucOut[50]    =  {0};
 Str2BIN(pText, ucOut, iLen);

 需要注意的是,源串中只能是16进制的数字,字母只能是a~f

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-18
将string转化为int

#include <iostream>
#include<sstream>
#include<string>

using namespace std;

int main()
{
string str="110";
istringstream istr(str);
int i=0;
istr>>i;
cout<<i<<endl;
cout << "Hello world!" << endl;
return 0;
}追问

好像string str = "dfsdsafds"不行吧/?

第2个回答  2013-09-18
#include <iostream>

using namespace std;

int main ( )

{

string a="12341234";

int b=atoi(a.data());

cout << b;

 return 0;

}

追问

linux下好像不行啊?我转换后为0 当然是第"dsaifsafsdaf"这样的字符串,数字不用

第3个回答  2013-09-18
看错了 ,以为是转char*追问

e额,有什么办法么?

第4个回答  2013-09-18
ctoi之类的函数

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网