【问题标题】:How to store an integer in a single index of character array?如何将整数存储在字符数组的单个索引中?
【发布时间】:2012-11-18 22:45:15
【问题描述】:

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

【问题讨论】:

  • “单个索引中的单个整数”是什么意思?
  • 在 char 数组的单个 元素 中?
  • 是字符数组的单个元素 int num;字符 arr[10]; arr[0]=数字;但我没有得到正确的价值..
  • 看看 sprintf() 函数。也许这就是你所寻求的cplusplus.com/reference/clibrary/cstdio/sprintf
  • 一个字符不够大,无法存储所有整数,那么num的范围是多少?

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


【解决方案1】:

如果你的意思是要将整数作为字符值,放到一个数组中,那么就是

array[index] = number;

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

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

更新:从您的 cmets 来看,这可能就是您想要的。

如果您的意思是要将数字的十进制表示形式写入一个数组(涵盖多个字符元素,而不仅仅是一个),那么不要使用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();

如果你的意思是别的,那么请澄清。

【讨论】:

    猜你喜欢
    • 2017-07-05
    • 1970-01-01
    • 2020-05-01
    • 2012-10-02
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多