我正在尝试颠倒QStringList中的单词。下面是到目前为止的代码,但我一直收到"Index out of Range“错误。从错误中看,我似乎正在尝试使用超出范围的数据,但无法解决我的问题。
QString reversed;
QStringList reversedlist;
QStringlist list = input.split(" ");
for (int i=0;i<list.length(); ++1)
reversedlist[i] = list[list.length() -1 -i];
reversed = reversedlist.join(" ");`谢谢
发布于 2016-02-06 21:55:02
正如@ThorngardSO所指出的,reversedlist最初是空的,您正在尝试访问循环代码中的无效索引。应使用以下函数之一将值添加到列表中:
push_back() (在push_back)append() (push_back)>C17append()( push_front)的Qt alternative
如您所见,prepend()在列表的开始处插入元素,这就是为什么它使列表的反转非常简单的原因:
for (int i = 0; i < list.length(); ++i) {
reversedlist.prepend(list[i]);
}另外,请注意在您的循环中有一个拼写错误的:它应该是++i而不是++1。
发布于 2016-02-06 20:01:30
您的reversedList最初是空的。您必须实际附加这些项,如下所示:
reversedlist.push_back (list[list.length () - 1 - i]);当然,尝试通过reversedList[i]访问不存在的项是行不通的,并且会抛出index-out-out-range错误。
发布于 2016-02-06 20:10:31
您的索引超出了范围,因为在QStringList反转列表中没有刺痛。因此,当您的代码到达reversedlist行时,它会抛出"index out of range“错误。你可以使用和不能赋值来读取值。如果要将该值分配给QStringList的特定索引。
QString reversed;
QStringList reversedlist;
QString input="123 456 789 000";
QStringList list = input.split(" ");
for (int i=0;i<list.length(); ++i){
//value to particular index
reversedlist.insert(i,list[list.length() -1 -i]);
}
reversed = reversedlist.join(" ");
qDebug() << reversed;https://stackoverflow.com/questions/35240259
复制相似问题