[英]How to convert int into a char array?
如果我要編譯以下代碼:
int x = 8;
int y = 17;
char final[2];
final[0] = (char) x;
final[1] = (char) y%10;
cout << final[0] << final[1] << endl;
它什么也沒顯示。 不知道為什么 那么如何成功轉換呢?
(char)8
不是'8'
,而是ASCII值8(退格字符)。 要顯示字符8,可以將其添加到'0'
:
int x = 8;
int y = 17;
char final[2];
final[0] = '0' + x;
final[1] = '0' + (y%10);
cout << final[0] << final[1] << endl;
根據您的程序,您正在打印char 8和char7。它們不可打印。 實際上,它們分別是BELL和Backspace字符。 只需運行您的程序並將其重定向到文件即可。 然后做一個十六進制轉儲,您將看到打印的內容。
./a.out> / tmp / b
高清/ tmp / b
00000000 08 07 0a | ... |
00000003
您需要了解的是,在C ++中,字符是數字 ,就像整數一樣,只是在較小的范圍內。 當您將整數8轉換為char時,C ++認為您想要一個保留數字 8的char。如果查看方便的ASCII表 ,我們可以看到8是BS(退格鍵),而7是BEL(當您將其打印到終端)。 這些都不是可打印的,這就是為什么您什么都看不到的原因。
如果您只想將87
打印到標准輸出,那么此代碼將執行以下操作:
cout << x << (y%10) << endl;
如果確實需要先將其轉換為字符,然后不用擔心,它仍然可以完成。 我不是C ++人,但這是在C中做到這一點的方法:
char final[2];
snprintf(final, sizeof final, "%d%d", x, y % 10);
(請參見snprintf(3) )
此代碼將2字符數組視為字符串,並使用printf
格式字符串將您指定的兩個數字寫入其中。 C中的字符串通常以NUL字節結尾,如果將數組擴展為三個字符,則最終字符將設置為NUL。 但是因為我們告訴snprintf
字符串有多長,所以它不會寫更多的字符。
這在C ++中也應該起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.