如何在字符数组的单个索引中存储整数?

时间:2012-11-18 22:45:15

标签: c++ arrays visual-c++ atoi itoa

我想在单个字符数组索引中存储一个整数。在这种情况下,itoa功能不起作用。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:7)

如果你的意思是想要将整数用作字符值并将其放在数组中,那么它只是

array[index] = number;

如果您的意思是想要将一位数字的值写入数组的特定索引,那么

if (number >= 0 && number < 10) {
    array[index] = '0' + number;
} else {
    // not representable by a single digit
}

更新:根据您的评论,这可能就是您想要的。

如果您想将数字的十进制表示写入数组(包含多个字符元素,而不仅仅是一个),则不要使用itoa,因为这是非标准且危险的。 snprintf可以更安全地做到这一点:

if (snprintf(array, array_size, "%d", number) >= array_size) {
    // the array was too small
}

或者,因为这是C ++,您可以使用std::string为您管理内存并确保数组足够大:

std::string string = std::to_string(number);

或者,如果您遇到过时的C ++库

std::ostringstream ss;
ss << number;
std::string string = n.str();

如果您的意思是其他,请澄清。