簡體   English   中英

如何將int轉換為char數組?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM