C++ C++;:如何分配和填充引用传递的结构的动态数组?

C++ C++;:如何分配和填充引用传递的结构的动态数组?,c++,arrays,pointers,pass-by-reference,dynamic-memory-allocation,C++,Arrays,Pointers,Pass By Reference,Dynamic Memory Allocation,我有一个非常简单的结构,用于向动态数组添加size字段: template <typename T> struct sized_array { int size; T* array; }; 其他函数,array\u join和array\u print打印数组的内容: string array_join(sized_array<int> &array, string delimiter) { string text = "";

我有一个非常简单的结构,用于向动态数组添加
size
字段:

template <typename T>
struct sized_array {
    int size;
    T* array;
};
其他函数,
array\u join
array\u print
打印数组的内容:

string array_join(sized_array<int> &array, string delimiter) {
    string text = "";

    for (int i = 0; i < array.size; i++) {
        text += array.array[i];
        if (i < array.size) text += delimiter;
    }

    return text;
}

void array_print(sized_array<int> &array) {
    cout << "array(" << array.size << ") = [";
    cout << array_join(array, ", ") << "]" << endl;
}
字符串数组\u连接(大小数组和数组,字符串分隔符){
字符串文本=”;
for(int i=0;i
这是因为
array\u join
函数中有一个错误:

text += array.array[i];
这将附加一个重新解释为
char
int
,而不是数字的十进制表示形式

用于修复此问题:

text += std::to_string(array.array[i]);

如果在C++ 11之前被限制为C++版本,请使用.< /P> 打印时,数组似乎由随机ASCII字符填充

这是因为
array\u join
函数中有一个错误:

text += array.array[i];
这将附加一个重新解释为
char
int
,而不是数字的十进制表示形式

用于修复此问题:

text += std::to_string(array.array[i]);

如果C++之前的C++版本限制,请使用.< /P>谢谢你的答案!为什么你知道在调试程序中数组元素是不可见的,并且只显示第一个元素?@ WearyAdventurer Debugger不知道它是一个数组,它把指针类型变量当作指向单个项的指针。谢谢你的回答!是否数组元素在调试器中不可见,并且只显示第一个?@WearyAdventurer调试器不知道它是数组,它将指针类型的变量视为指向单个项的指针。1)调试器看到的只是一个

T*
,并且不知道它是指向单个
T
的指针,还是这些元素的数组,因此它显示了e
*数组的值
.2)“打印时,数组似乎用随机ASCII字符填充”不,它不是那样显示的。如果您实际打印数组,您会看到。将数组连接到字符串的代码会这样做。
text+=array.array[i]实际上,
不会将数字转换为字符串。1)调试器看到的只是一个
T*
,并且不知道它是指向单个
T
的指针还是一个数组,因此它会向您显示
*数组的值。2)“打印时,数组中似乎填充了随机ASCII字符”不,看起来不是这样。如果你真的打印了数组,你就会看到。将数组连接成字符串的代码,就是这样。
text+=array.array[i]
实际上不会将数字转换成字符串。