C++,函数将数组作为字符串返回

标签 c++ arrays string function

我是 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/

相关文章:

c++ - 如何评估自定义内存分配器的质量?

c++ - 检查 float 是否为负数的奇怪方法

c++ - 从 C++ 调用时指定 Python 模块的目录

java - 将此 String 转换为 int 的最佳方法

java - 返回包含字符串形式整数的字符串数组,用文本字符串替换某些数字的倍数

C++三角形光栅化

PHP 比较两个数组 : Same values, 的简单方法,无论顺序如何

C++ 对 std::bitset 的位进行操作

javascript - 在具有两个元素的数组中查找正点元素javascript

javascript - 数组到字符串的转换不起作用