gpt4 book ai didi

c++ - 如何使用动态调整大小的字符串数组?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:25:42 25 4
gpt4 key购买 nike

我正在尝试在 C++ 中使用大小会发生变化的数组。由于某种原因,大小不会改变,它只包含 1 个字符串。困难的部分是用户无法输入他们要添加的类(class)数量,而是调用 addCourse 函数,直到用户停止。不能使用 vector (这是用于学校作业,需要调整大小的数组)。我不明白为什么数组似乎只包含一个字符串,我认为它包含等同于 numCourses 的字符串。每次调用该函数后,我将如何调整大小以容纳多个字符串?

void Student::addCourse(string* courseName)
{
int x;
numCourses += 1;//increments number of courses

string newCourse = *courseName;

string* newCourses = new string[numCourses];//temporary array

for(x=0; x<numCourses - 1; x++)//fills temp array with the values of the old
{
newCourses[x] = courses[x];
}

newCourses[numCourses - 1] = newCourse;//adds extra value

delete[] courses;//removes original array

courses = newCourses;//sets the new course list
}

编辑:对于那些询问为什么不能使用 vector 的人,因为分配的要点是使用堆主动避免内存泄漏。使用这样的数组会强制有意删除存储的值。

最佳答案

评论应该已经回答了你的问题:调试器无法知道指向字符串的指针指向数组,也不知道它的边界,因为在运行时没有保存此类信息(std::vector 将在调试器中显示其全部内容,相反)。

关于c++ - 如何使用动态调整大小的字符串数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19623841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com