我有一個int,我想獲取包含該int的char *。我的代碼是:將int轉換爲char時的奇怪輸出*
int getLength(int x) {
int l = 0;
while(x) {
l++;
x /= 10;
}
return l;
}
char* toString(int x) {
int l = getLength(x);
char *str = new char[l];
l--; // the digits will be placed on positions 0 to l-1
while(l >= 0) {
str[l] = x % 10 + '0';
x /= 10;
l--;
}
return str;
}
一些結果:
toString(1009) = 1009Ä
toString(23) = 23L
爲什麼?我只爲l個字符分配空間。 (l = int的長度)
stdlib中有一個函數 - itoa(),它執行此操作。此外,你的字符串緩衝區我們不以null結尾。 – OldProgrammer
@OldProgrammer itoa'雖然不是標準函數。 – Kninnug
這是一個C或C++的問題嗎?在C中,沒有'new',但是在C++中你不會使用'new char []' - 你可以使用簡單的'std :: string'或'std :: vector'。 –