#includestdio.h
10年積累的網(wǎng)站制作、成都網(wǎng)站制作經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有陽高免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
#includestdlib.h
#includectype.h
long stoi(char *s,int *i) //stoi函數(shù)返回類型應(yīng)該跟返回值的類型一樣
{
long n=0;
while(isdigit(s[*i]))
n=n*10+s[(*i)++]-48;//這里的字符為'0'、'1'、、、要變成數(shù)字
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);}//這邊兩條語句加括號(hào)
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;
}
我運(yùn)行過了才帖上來的,錯(cuò)誤也都指出來了。分給我吧。
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;}
擴(kuò)展資料:
還有3種方式可以實(shí)現(xiàn),其中兩種是使用系統(tǒng)函數(shù),另一種是直接自己編寫。
下面的代碼就是3種方式的實(shí)現(xiàn),包括2位的整數(shù)和任意整數(shù)(2的31次方以內(nèi))都可以??勺约哼x擇需要的實(shí)現(xiàn)方式。
利用系統(tǒng)函數(shù)有
1. char *? itoa ( int value, char * str, int base );value是要轉(zhuǎn)化的數(shù)字,str是轉(zhuǎn)化后的字符串存儲(chǔ)的位置,base是進(jìn)制數(shù)(但是這個(gè)函數(shù)不是標(biāo)準(zhǔn)C函數(shù),有些編譯器是不支持的?。?。所以代碼可以為:
char buffer [33]; //用于存放轉(zhuǎn)換好的十六進(jìn)制字符串,可根據(jù)需要定義長度 char * inttohex(int aa){? ? itoa (aa, buffer, 16);? ? return (buffer);}
2. sprintf(str,"%x",value);str是轉(zhuǎn)化存儲(chǔ)的位置,%x表示十六進(jìn)制格式,value是要轉(zhuǎn)化的數(shù)字。所以代碼可以為:
char buffer [33]; //用于存放轉(zhuǎn)換好的十六進(jìn)制字符串,可根據(jù)需要定義長度 char * inttohex(int aa){? ? sprintf(buffer, "%x", aa);? ? return (buffer);}
3. 自己編寫
如果參數(shù)只要兩位數(shù)的整數(shù),那么很簡單。
代碼如下:
#include stdio.h#include stdlib.h char buffer [33]; //用于存放轉(zhuǎn)換好的十六進(jìn)制字符串,可根據(jù)需要定義長度 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;}
字符串怎么轉(zhuǎn)數(shù)值?
答:用函數(shù) std::stoi()
函數(shù)原型:
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 是進(jìn)制。
// 程序例子,轉(zhuǎn) 十進(jìn)制,16進(jìn)制,2進(jìn)制 的string 或 自動(dòng)判斷
#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
=======================
上述方法比較新。老編譯器可能不支持。
-------
其實(shí)最簡單的是 c 的 sscanf( "12345","%d",x);
#include iostream
#include string
using namespace std;
#include stdio.h
接下來 c 的東西 可以 直接在 c++ 里 使用。
網(wǎng)站題目:c語言stoi函數(shù)用法 strlen函數(shù)用法c語言
本文地址:http://jinyejixie.com/article20/hpceco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、定制網(wǎng)站、網(wǎng)站導(dǎo)航、電子商務(wù)、軟件開發(fā)、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)