我有一个链表类的实现(出于奇怪的原因使用char数组)
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'
确保我的数组以空值终止,没有任何区别。
我有另一个方法,它接受指向链表中前一个节点的指针。我只是省略了它
答案 0 :(得分:3)
您似乎并不想将letters
与i
编入索引,因为它始于start
。如果start
大于0
,那么您将最终在动态分配的数组的末尾运行。相反,你想要:
letters[i - start] = input[i];
然后:
letters[i - start] = '\0'; // or end - start