你好我有一個問題,我試圖將字符串「12314234」轉換爲int ,所以我會得到字符串中的第一個數字。 從上面顯示的字符串的示例中,我想在int中獲得'1'。 我嘗試過: string line = "12314234"; int command = line.at(0);
但它把內部命令的ascii值爲1而不是數字1. 在此先感謝。將字符串轉換爲int
回答
爲數字字符(「0
‘–’9
‘)轉換成其相應的值,只是由該結果的。減去’0
」的ASCII碼。
int command = line.at(0) - '0';
int command = line.at(0) - '0';
的數字字符的數值需要是彼此相鄰。所以這個工作無處不在,始終如一不管你的編譯器使用什麼字符集。
從stdlib(#include <cstdlib>
)轉換ascii爲整數值的標準函數是strtol(字符串到長整數)。有關信息,請參見http://en.wikipedia.org/wiki/Strtol,然後關閉該頁面,標題爲正確使用strtol並移植。使用strtol你可以轉換一個數字字符,或一個數字字符序列,它們可以是多個基地址(十進制,十六進制等)。
是的,除了C,不是C++。 – alternative 2010-09-04 14:22:49
@mathepiC#include
是的,但你必須將'string'轉換爲'char *' – alternative 2010-09-04 16:23:48
我試圖爲一個字符串,如「12314234」爲int
升壓轉換有這樣一個圖書館:
int i = boost::lexical_cast<int>(str);
對不起下旬加入這個黨,但什麼是錯的:
int value;
std::string number = "12345";
std::istringstream iss(number);
iss >> value;
如果你傳遞十六進制(而誰不是這些天),那麼你可以這樣做:
int value;
std::string number = "0xff";
std::istringstream iss(number);
iss >> std::hex >> value;
這是C++,並沒有這種hackish減法ASCii的東西。
boost::lexical_cast<>()
如果您使用的是提升方式,那麼方式不錯,乾淨。如果你不能保證傳遞的字符串是一個數字,那麼你應該捕獲拋出的錯誤。
- 1. 轉換INT [] []將字符串
- 2. 如何將字符串轉換爲int?
- 3. 將字符串轉換爲int []
- 4. 將字符串類型轉換爲int
- 5. C:將int轉換爲字符串
- 6. 將int和char轉換爲字符串
- 7. 將字符串轉換爲int - java.lang.NumberFormatException.forInputString
- 8. 將int轉換爲字符串數組
- 9. 將字符串轉換爲int c
- 10. LINQ將字符串轉換爲int
- 11. 將字符串轉換爲int數組
- 12. 如何將字符串轉換爲Int?
- 13. 將int轉換爲字符串
- 14. 將字符串[]轉換爲int []
- 15. 將字符串轉換爲int(2)
- 16. 而將字符串轉換爲int後
- 17. C++將字符串轉換爲int
- 18. 將int轉換爲字符
- 19. 如何將字符串與int轉換爲字符串與雙?
- 20. F#將字符串轉換爲int轉換
- 21. 無法將字符串轉換爲常量字符/字符串*爲int *
- 22. 將一個字符串轉換成INT
- 23. 轉換將int字符串值
- 24. 將一個字符串轉換成int
- 25. 如何將提醒int值轉換爲字符串(字符)
- 26. 將int轉換爲固定的字符數中的字符串
- 27. 將字符串euler號碼轉換爲int中的int#
- 28. 將int字符串的列表/元組轉換爲int
- 29. 如何將int slice的字符串轉換爲int切片?
- 30. 將int轉換爲字符串,然後返回到int
C/C++標準不保證ASCII。它們確保所有的數字字符代碼都是相鄰的,並且按照順序排列,所以'5' - '0'將導致5。 – 2010-09-04 15:41:57
也不是真的C++。看到我的答案。 – 2010-09-05 12:08:41