重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#includestdio.h
10年积累的网站制作、成都网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有阳高免费网站建设让你可以放心的选择与我们合作。
#includestdlib.h
#includectype.h
long stoi(char *s,int *i) //stoi函数返回类型应该跟返回值的类型一样
{
long n=0;
while(isdigit(s[*i]))
n=n*10+s[(*i)++]-48;//这里的字符为'0'、'1'、、、要变成数字
return n;
}
long add(char *s)
{
int i=0,*pi=i;//指针pi没有指向变量
char op;
long a=0,b=0,c;
a=stoi(s,pi);
op=s[(*pi)++];
b=stoi(s,pi);
switch(op) {
case '+':return a+b;
case '-':return a-b;
case '*':return a*b;
case '/':if(b==0){ printf("div!0");exit(0);}//这边两条语句加括号
return a/b;
default: printf("operator error!");exit(0);
}
}
int main(void)
{
char s[80];
gets(s);
printf("%s=",s);
printf("%ld\n",add(s));
return 0;
}
我运行过了才帖上来的,错误也都指出来了。分给我吧。
int stoi(char s[]){
int n=0,i=0;
while (s[i]='0' s[i]='9'){n=n*10+(s[i]-'0');i++;}
return n;
}
int x;
char *s="123";
x=stoi(s);
完事
(stoi就是string to int 的缩写嘛)
方法一:
#includeiostream
#include string
using namespace std;
string DecIntToHexStr(long long num)
{ string str; long long Temp = num / 16; int left = num % 16; if (Temp 0) str +=
DecIntToHexStr(Temp); if (left 10) str += (left + '0'); else str += ('A' + left - 10); return str;}
string DecStrToHexStr(string str){ long long Dec = 0; for (int i = 0; i str.size(); ++i) Dec =
Dec * 10 + str[i] - '0'; return DecIntToHexStr(Dec);}int main()
{ string DecStr; while (cin DecStr) { cout "0x" + DecStrToHexStr(DecStr); } return 0;}
方法二:
#includeiostream
#include string
#includevector
#include sstream
#include math.h
using namespace std;int main()
{ string decStr; cin decStr; int num = stoi(decStr); vectorintv; while (num) { int bit = num % 2; v.push_back(bit); num = num / 2; }
reverse(v.begin(), v.end()); string hexStr; if (v.size() % 4 == 0) { for (int i = 0; i v.size() / 4; ++i) { int temp = 0, k = 3; for (int j = i * 4; j (i +
1) * 4; ++j) { if (v[j] == 1) temp += pow(2, k); --k; } if (temp = 9) hexStr += temp; else hexStr += ('A' + temp - 10); } }
else { int zeroNum = 4 - v.size() % 4; for (int i = 0; i zeroNum; ++i) v.insert(v.begin(), 0); for (int i = 0; i v.size() / 4; ++i) { int temp = 0, k = 3; for
(int j = i * 4; j (i + 1) * 4; ++j) { if (v[j] == 1) temp += pow(2, k); --k; }
if (temp = 9) { stringstream ss; string strTemp;
ss temp; ss strTemp; hexStr += strTemp; } else hexStr += ('A' + temp - 10); } } cout hexStr endl; return 0;}
扩展资料:
还有3种方式可以实现,其中两种是使用系统函数,另一种是直接自己编写。
下面的代码就是3种方式的实现,包括2位的整数和任意整数(2的31次方以内)都可以。可自己选择需要的实现方式。
利用系统函数有
1. char * itoa ( int value, char * str, int base );value是要转化的数字,str是转化后的字符串存储的位置,base是进制数(但是这个函数不是标准C函数,有些编译器是不支持的!)。所以代码可以为:
char buffer [33]; //用于存放转换好的十六进制字符串,可根据需要定义长度 char * inttohex(int aa){ itoa (aa, buffer, 16); return (buffer);}
2. sprintf(str,"%x",value);str是转化存储的位置,%x表示十六进制格式,value是要转化的数字。所以代码可以为:
char buffer [33]; //用于存放转换好的十六进制字符串,可根据需要定义长度 char * inttohex(int aa){ sprintf(buffer, "%x", aa); return (buffer);}
3. 自己编写
如果参数只要两位数的整数,那么很简单。
代码如下:
#include stdio.h#include stdlib.h char buffer [33]; //用于存放转换好的十六进制字符串,可根据需要定义长度 char * inttohex(int aa)
{ sprintf(buffer, "%x", aa); return (buffer);} int main ()
{ int num; char * hex_str; printf ("Enter a number: "); scanf ("%d",num); hex_str = inttohex (num); printf ("Hexadecimal number: %sH\n", hex_str); return 0;}
字符串怎么转数值?
答:用函数 std::stoi()
函数原型:
int stoi (const string str, size_t* idx = 0, int base = 10);
int stoi (const wstring str, size_t* idx = 0, int base = 10);
base 是进制。
// 程序例子,转 十进制,16进制,2进制 的string 或 自动判断
#include iostream
#include string
int main ()
{
std::string str_dec = "2001, A Space Odyssey";
std::string str_hex = "40c3";
std::string str_bin = "-10010110001";
std::string str_auto = "0x7f";
std::string::size_type sz; // alias of size_t
int i_dec = std::stoi (str_dec,sz);
int i_hex = std::stoi (str_hex,nullptr,16);
int i_bin = std::stoi (str_bin,nullptr,2);
int i_auto = std::stoi (str_auto,nullptr,0);
std::cout str_dec ": " i_dec " and [" str_dec.substr(sz) "]\n";
std::cout str_hex ": " i_hex '\n';
std::cout str_bin ": " i_bin '\n';
std::cout str_auto ": " i_auto '\n';
return 0;
}
输出:
2001, A Space Odyssey: 2001 and [, A Space Odyssey]
40c3: 16579
-10010110001: -1201
0x7f: 127
=======================
上述方法比较新。老编译器可能不支持。
-------
其实最简单的是 c 的 sscanf( "12345","%d",x);
#include iostream
#include string
using namespace std;
#include stdio.h
接下来 c 的东西 可以 直接在 c++ 里 使用。