Re: [問題]如何把char轉成int

看板C_and_CPP (C/C++)作者 (有趣生活)時間16年前 (2009/07/12 18:53), 編輯推噓1(102)
留言3則, 3人參與, 最新討論串5/6 (看更多)
※ 引述《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
兩者對"123abc"的反應結果不一樣
07/13 15:53, 2F

07/13 19:23, , 3F
感謝樓上提醒~我的測資沒有測到,還有其他要考慮的情況
07/13 19:23, 3F
文章代碼(AID): #1AMS2VzY (C_and_CPP)
文章代碼(AID): #1AMS2VzY (C_and_CPP)