首页 > 解决方案 > 在 C++ 中用整数填充固定大小的 char 数组

问题描述

我想将整数存储在 char 数组中,例如:0 到 1449,我检查了其他帖子,并尝试了 memset、sprintf 等,但是当我在 char 数组中打印时,我得到乱码或不可读的符号。有人可以帮忙吗?

我检查了重复的链接,但是我没有尝试将 int 打印到 char,我想将 int 存储在 char 数组中。但是我在for循环里面试过buf[i] = static_cast<char>(i);,但没有用。铸造没有奏效。

我尝试的最后一个是这样的: char buf[1450];

for (int i = 0; i < 1449; i++)
{
    memset(buf, ' '+ i, 1450);
    cout << buf[i];
}

输出是:这里

标签: c++arrayschar

解决方案


我不确定你想做什么!你应该说出你的目标。

c++ 中的 char(通常为 8 位)不包含 int(通常为 32 位),如果要存储 int,则应使用 int 数组:

int buf[1500];

memset(buf, ' '+ i, 1450); 实际上将始终在缓冲区的开头写入 ' ' ascii 数字加上 i 的总和(缓冲区地址永远不会增加)。

像这样的东西,也许是你想要的:

int buf[1500] = 0;
for (int i = 0; i < 1449; i++)
{
    buf[i] = i;
    cout << buf[i] << ' ';
}

考虑使用像 std::vector 这样的 c++11 容器来保存 int 或 chars,使用起来会更安全。


推荐阅读