你好我有一個問題,我試圖將字符串「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,int轉換爲字符串
- 2. 轉換INT [] []將字符串
- 3. 將字符串轉換爲int數組
- 4. 將字符串轉換爲int []
- 5. 將字符串轉換爲空值int
- 6. 將字符串轉換爲int陣列
- 7. 如何將字符串轉換爲int
- 8. 如何將字符串轉換爲Int?
- 9. 如何將字符串轉換爲int?
- 10. 將字符串轉換爲int在C++
- 11. SSRS將Int轉換爲字符串
- 12. LINQ將字符串轉換爲int
- 13. 而將字符串轉換爲int後
- 14. C:將int []轉換爲字符串
- 15. 將int轉換爲字符串數組
- 16. JAQL將int轉換爲字符串
- 17. 將字符串轉換爲int - datareader
- 18. 將JTextField字符串轉換爲Int
- 19. 將int和char轉換爲字符串
- 20. C:將int轉換爲字符串
- 21. 將字符串類型轉換爲int
- 22. 將int轉換爲字符串
- 23. 將DataSet轉換爲字符串或Int
- 24. 將arraylist int轉換爲字符串
- 25. 將字符串轉換爲int(C++)
- 26. C++將字符串轉換爲int
- 27. 將字符串轉換爲顏色int
- 28. 將字符串空值轉換爲int
- 29. 將字符串轉換爲int(2)
- 30. 將字符串轉換爲long long int
C/C++標準不保證ASCII。它們確保所有的數字字符代碼都是相鄰的,並且按照順序排列,所以'5' - '0'將導致5。 – 2010-09-04 15:41:57
也不是真的C++。看到我的答案。 – 2010-09-05 12:08:41