我正试图扭转QStringList
内的字词。下面是到目前为止的代码,但我继续使用#34;索引超出范围"错误。从错误来看,我似乎正在尝试使用超出范围的数据,但无法弄清楚我的问题。
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(" ");`
由于
答案 0 :(得分:2)
正如@ThorngardSO所指出的那样,reversedlist
最初是空的,并且您正试图访问循环代码中的无效索引。您应该使用以下功能之一将值添加到列表中:
push_back()
(在列表的结尾处插入值)push_front()
(在列表的开头处插入值)append()
(Q {替代push_back
)prepend()
(Q {替代push_front
)如您所见,prepend()
会在列表的开头处插入元素,这就是为什么它使列表的反转变得非常简单:
for (int i = 0; i < list.length(); ++i) {
reversedlist.prepend(list[i]);
}
另请注意,您的循环中存在拼写错误:它应该是++i
而不是++1
。
答案 1 :(得分:1)
您的reversedList最初为空。您必须实际附加项目,如下所示:
reversedlist.push_back (list[list.length () - 1 - i]);
当然,尝试通过reversedList[i]
访问不存在的项目不起作用,并抛出索引输出范围错误。
答案 2 :(得分:0)
你的索引超出了范围,因为QStringList反向列表中没有任何刺痛。因此,当您的代码到达反向列表[0]时,它会抛出“索引超出范围”错误。您可以使用[0]读取值并且无法分配。 如果要将值分配给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;