[英]How to cast an int variable to char in C++?
char a[3];
int x=9;
int y=8;
a[0]=(char)x;
a[1]=(char)y;
a[2]='\0';
unsigned char * temp=(unsigned char*)a;
但是當我顯示此溫度時,顯示的是?8。 應該顯示98。
誰能幫忙嗎?
如果您使用的是C ++,則最好使用stringstream 。 然后,您可以按照以下步驟進行操作
std::stringstream stream;
stream << x << y;
char a[3];
int x='9';
int y='8';
a[0]=(char)x;
a[1]=(char)y;
a[2]='\0';
unsigned char * temp=(unsigned char*)a;
printf("%s", temp);
您提供的值為9和8,而不是它們的ASCII值。
或者,更通用
template <class T> string toString (const T& obj)
{
stringstream ss;
ss << obj;
return ss.str();
}
類似於nico的解決方案是您應該使用的解決方案(如果您具有boost,也請參見boost :: lexical_cast),但是對於您的問題的直接答案(例如,如果您想了解較低級別的內容),字符串[9 ,8,\\ 0]不是“ 98”。
“ 98”實際上是ASCII中的[57,56,0]或[0x39,0x38,0x0]。 如果要以這種方式手動連接從0到9的十進制數字,則必須在它們之間添加'0'(0x30)。 如果要處理超出該范圍的數字,則必須做更多的工作來提取每個數字。 總的來說,您應該使用類似toString函數模板nico posted或boost :: lexical_cast之類的版本,以獲得更完整的版本。
有兩種方法:
itoa()
當然,第二種方法僅適用於個位數,因此在一般情況下,您寧願使用itoa()
。
a[0] = (char)x;
a[1] = (char)y;
應該
a[0] = x + '0';
a[1] = y + '0';
(如果要禁用警告,請保留演員表)/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.