[問題] string轉成int
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
C++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
假設要處理一系列的整數,最後以一個"*"表示結束
所以我是這樣寫的
string input;
while(cin >> input, input!="*")
{
//此時input是string,但我需要以int來處理
}
return 0;
餵入的資料(Input):
123
4567
*
預期的正確結果(Expected Output):
123
4567
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版)
我用兩種方法,但想知道有沒有更好的
1.用 1234=1*10^4+2*10^3+3*10^2+4*10^1 的方法轉成int
int num;
for(int bit=input.size() ; bit!=0 ; --bit)//input的string轉成int
{
num+=(input[bit-1]-48)*mee(input.size()-bit);
}//mee(n)是10的n次方,等等在說明為什麼要這樣
cout << num << endl;
2.先複製到char在用函數轉成int
char buf[input.size()];
strcpy(buf,input.c_str());
int num = atoi ( buf );
cout << num << endl;
補充說明(Supplement):
我是C++新手,10的n次方那邊好像不能直接打10^n,就先寫的函式將就著用
如果有板友知道不能用的原因也麻煩教我~
雖然已經找到方法可以轉換,但第一個方法是我自己想的
有點土法煉鋼的感覺
而第二個方法,用的strcpy我看C++ Primer說是C-style函式
建議不要用
所以想知道是不是有更好的方法?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.19.145.249
※ 編輯: luke90512 來自: 163.19.145.249 (11/02 17:54)
推
11/02 17:55, , 1F
11/02 17:55, 1F
推
11/02 17:59, , 2F
11/02 17:59, 2F
→
11/02 18:02, , 3F
11/02 18:02, 3F
→
11/02 18:03, , 4F
11/02 18:03, 4F
→
11/02 18:06, , 5F
11/02 18:06, 5F
→
11/02 18:06, , 6F
11/02 18:06, 6F
→
11/02 18:07, , 7F
11/02 18:07, 7F
→
11/02 18:07, , 8F
11/02 18:07, 8F
→
11/02 18:19, , 9F
11/02 18:19, 9F
→
11/02 18:46, , 10F
11/02 18:46, 10F
→
11/02 18:46, , 11F
11/02 18:46, 11F
→
11/02 19:02, , 12F
11/02 19:02, 12F
→
11/02 19:03, , 13F
11/02 19:03, 13F
→
11/02 19:04, , 14F
11/02 19:04, 14F
→
11/02 19:09, , 15F
11/02 19:09, 15F
推
11/02 20:33, , 16F
11/02 20:33, 16F
→
11/02 20:48, , 17F
11/02 20:48, 17F
→
11/02 20:59, , 18F
11/02 20:59, 18F
→
11/02 21:06, , 19F
11/02 21:06, 19F
→
11/02 21:06, , 20F
11/02 21:06, 20F
→
11/02 21:09, , 21F
11/02 21:09, 21F
→
11/02 23:33, , 22F
11/02 23:33, 22F
推
11/03 01:20, , 23F
11/03 01:20, 23F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章