gpt4 book ai didi

c++ - 为什么我不能再给数组赋值

转载 作者:行者123 更新时间:2023-11-30 02:56:23 24 4
gpt4 key购买 nike

我有一个链表类的实现(出于奇怪的原因使用字符数组)

list_node::list_node(const std::string & input, int start, int end) {
std::cout << "1 arg constructor called" << std::endl;

letters = new char[end - start + 1];
int i = start;

for (i = start; i < end; i++) {
letters[i] = input[i];
}

letters[i] = '\0';

std::cout << letters << std::endl;
previous = NULL;
next = NULL;
}

我无法理解的是,第一次调用此方法时,它起作用了。此后,它没有。在Eclipse中单步调试,for循环体根本不执行!我加了

letters[i] = '\0'

确保我的数组以 null 结尾,没有任何区别。

我有另一种方法,它接收指向链表中前一个节点的指针。我只是省略了它

最佳答案

看起来您实际上并不想用 i 索引 letters,因为它从 start 开始。如果 start 大于 0,那么您将最终运行到动态分配数组的末尾。相反,您想要:

letters[i - start] = input[i];

然后:

letters[i - start] = '\0'; // or end - start

关于c++ - 为什么我不能再给数组赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15532037/

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