Linux 下 C++如何将string 转为 int
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
参考技术A 将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"不行吧/?
参考技术B #include <iostream>using namespace std;
int main ( )
string a="12341234";
int b=atoi(a.data());
cout << b;
return 0;
追问
linux下好像不行啊?我转换后为0 当然是第"dsaifsafsdaf"这样的字符串,数字不用
参考技术C 看错了 ,以为是转char*追问e额,有什么办法么?
参考技术D ctoi之类的函数c++ 如何将string 转成 enum 类型,enum 转成 string类型,
试过enum(string)强转编译不过
参考技术A 枚举类型如下:public enum ConcertCode
BEIJING,
SHANGHAI,
GUANGZHOU
如果要将比如“beijing”字符串转换为ConcertCode.BEIJING的话,可以通过如下方法:
ConcertCode c = (ConcertCode)Enum.Parse(typeof(ConcertCode), 字符串的变量, true)
以上是关于Linux 下 C++如何将string 转为 int的主要内容,如果未能解决你的问题,请参考以下文章