Re: [問題]如何把char轉成int
※ 引述《su31o4gj83 (哈哈哈哈哈哈哈哈哈哈哈)》之銘言:
: 現在有三種方法: atoi, sstream, C++0x
: 我自己是只有想到atoi
: sstream是完全都是C++的寫法, 但我覺得稍嫌冗長
: 至於C++0x的用法我就不甚了解了, 最近才開始慢慢接觸一些C++0x的文件
: atoi的寫法如下:
: #include <iostream>
: using namespace std;
: int main(){
: string ch = "10";
: cout << atoi( ch.c_str() ) + 2 << endl;
: getchar();
: return 1;
: }
: 字串部分已經用string管理, 所以應該不用擔心記憶體overflow的問題
: 這幾個方法的優缺點, 有人可以幫忙分析一下嗎 ??
討論只用 C 的狀況
文字轉數字,其實還有另外兩種較好的作法:strtol 和 sscanf
而不要用 atoi / atol
雖然原發問po的狀況是預期輸入數字,實際應用上難保手滑打個 "abc" 進來
而 atoi("abc") 也會回傳 0
所以當你得到 0 這個值的時候,也許 user 並不是真的輸入 "0"
以下片段,可以修改 s 陣列的內容來觀察一下結果:
char s[]="abc", *error;
int ret, num1, num2;
num1 = (int)strtol(s, &error, 10);
if (*error != 0)
puts("invalid input");
else
printf("use strtol: %d\n", num1);
ret = sscanf(s, "%i", &num2);
if (ret != 1)
puts("invalid input");
else
printf("use sscanf: %d\n", num2);
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.126.2.150
※ 編輯: UNARYvvv 來自: 122.126.2.150 (07/12 18:54)
推
07/13 12:19, , 1F
07/13 12:19, 1F
→
07/13 15:53, , 2F
07/13 15:53, 2F
→
07/13 19:23, , 3F
07/13 19:23, 3F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章