我是 C++ 的新手,我正在尝试创建一个函数,该函数接受一个数字数组并将这些数字转换为 ASCII 字符,即将 int 转换为字符串。但是,当我尝试输出字符串时,我得到了随机字符。我搜索了教程,有人建议我应该添加一个字符串终止符,我确实这样做了,但它似乎没有解决这个问题,我找不到可以解决这个问题的答案。
即我希望下面的代码打印“Hello”。
#include <iostream>
#include <string>
char* intToString(int* array, int size)
{
char string[size + 1];
string[size] = '\0';
for (int i = 0; i <= size; i++)
string[i] = array[i];
return string;
}
int main()
{
int my_array[5] = {72, 101, 108, 108, 111};
int size = 5;
std::cout << intToString(my_array, size);
return 0;
}
最佳答案
char *
不是字符串。它是指向 char
的指针。在您的情况下,您会得到随机字符,因为您返回指向本地 string
的指针,该指针在调用后被销毁。使用 std::string
或者,如果您需要那么多数组,您可以从 std::array
获得正确的复制语义。
关于C++,函数将数组作为字符串返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50043449/