2014-09-20 69 views
0

我試圖但是它不保存我的思維方式存儲號碼作爲一個char矢量字符代號爲將一個int轉換爲char。不存儲

code->at(i) = static_cast<char>(distribution(generator)); 

正確的價值它應該

Value stored

有些人不應該''x4'ascii值爲4?如果不是,我該如何實現這一結果?

這是另一個向量誰的值輸入正確。 enter image description here

+2

''\ x4''是..'4'。很確定你正在考慮''''''''\ x34'' – WhozCraig 2014-09-20 12:49:23

+1

可能重複[如何將int轉換爲char c](http://stackoverflow.com/questions/1114741/how-to- convert-int-char-c) – 2014-09-20 12:52:23

回答

3

您正在執行轉換,但實際上並未將int轉換爲char。您需要:

code->at(i) = distribution(generator) + '0'; 
+0

謝謝,那是一種享受。以爲我忘記了一些東西 – 2014-09-20 13:52:53

+1

另外,爲什麼不簡單地設置一個'uniform_int_distribution '來簡單地在'0'到'9'之間。如果這樣做的目的是通過「9」生成數字字符「0」。 – WhozCraig 2014-09-20 21:12:00

3

\xN不給你的角色N的ASCII碼。

\xN ASCII字符&dagger;,其代碼爲N(在他的x adecimal形式)。

所以,當你寫'\x4',你得到的[無法打印]字符與ASCII碼4在轉換成整數,該值仍是4

如果你想看起來像4 ASCII字符,你會寫'\x34',因爲34是4的ASCII碼。你也可以到那裏使用一些魔法的基礎上,在ASCII碼是連續的,並從'0'開始:

code->at(i) = '0' + distribution(generator); 

&匕首; Ish。