我得到了一個值爲1的無符號字符,我需要把它放在像「1」這樣的字符串中。 但是,如果我試圖把這個直接放入一個stringstream它將得到char(1)的值,我需要它是「1」。 我知道,如果我可以將它放入函數atoi中,它將返回「1」值。 但我試圖將它轉換爲char並將其放入atoi函數中,但它會引發異常。 已經嘗試將它放入一個字符串中,並將c_str()轉換爲atoi函數,但沒有成功。 如果有人可以幫助我,我會補充。用無符號字符C++ atoi
-1
A
回答
3
只需抹上char
到int
將其插入std::stringstream
前:
ss << static_cast<int>(c);
這將把char
的價值不是一個字符,但作爲一個數值。
+0
或者'unsigned int',取決於更高的值應該是什麼樣子。 +1。 – us2012 2013-03-04 12:18:52
0
我相信你在這裏混淆了兩個函數。
您希望將整數轉換爲字符串。
atoi
(ascii to integer)但是會將字符串解析爲一個整數,從而使"123"
變爲123
。
您正在尋找itoa
功能在這裏,它有這個原型:
char * itoa (int value, char * str, int base);
在你的情況,這應該是這樣的:
char Buf[10];
itoa(123, Buf, 10);
printf("%s", Buf); //Outputs 123
請記住雖然,itoa不是標準的一部分,即使它受到一些編譯器的支持。爲了更符合標準的版本使用:
sprintf(Buf, "%d", 123);
當然,所有這一切都是純C,但任何C++編譯器將與這一切同樣的工作。
0
要將[0,9]範圍內的數值轉換爲相應的字符,只需將'0'
添加到它。這保證可以在所有系統上運行。
相關問題
- 1. 無符號長的atoi用C
- 2. C:將atoi()的輸出轉換爲無符號字符?
- 3. atoi無符號整數的等效
- 4. C將無符號字符轉換爲無符號字符:4
- 5. C - 無符號字符*到字符
- 6. C++ - 複製無符號字符*到一個新的無符號字符*數組
- 7. atoi和字符串數組
- 8. C數組的const無符號字符[] []
- 9. 無符號字符爲int在C + +
- 10. C++發現無符號字符
- 11. c#中的無符號字符**#
- 12. C到PHP無符號字符問題
- 13. C#中的無符號字符指針?
- 14. 不能讓atoi採取一個字符串(字符串與C字符串?)
- 15. 從無符號字符複製到無符號字符
- 16. 8位無符號字符數組到無符號字符
- 17. 將無符號字符*複製到無符號字符*
- 18. C中有符號和無符號字符需要什麼?
- 19. strcmp()和有符號/無符號字符
- 20. 與字符一起使用atoi
- 21. CORBA IDL到C++ - 字符與無符號字符?
- 22. C#編組字符**和無符號字符**
- 23. 將字符串轉換爲C中的無符號字符
- 24. 轉換無符號字符*爲char *字符串C
- 25. C++字符數組複製到無符號字符數組
- 26. 使用atoi輸入字符串的字符
- 27. C++字符常量符號
- 28. C++有符號/無符號不匹配
- 29. C++ 11類型(有符號+無符號)?
- 30. 無符號在C
你需要發佈實際的代碼,因爲你的問題毫無意義。 – 2013-03-04 12:13:49
請注意,'[unsigned] char'類型是文本字符(儘管它們也可以用作一個字節的整數值)。在內存中,文本字符和數字看起來是相同的,但是用字符串編寫它們不會(一個數字寫成幾個數字,而一個字符保留一個字符)。因此,stringstream會將其作爲一個字符寫入目標字符串中,以便您看到意想不到的情況。問題是stringstream不知道*如果你的字符是代表一個字符或數字。 – leemes 2013-03-04 12:27:01