首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QStringList“索引超出范围”

QStringList“索引超出范围”
EN

Stack Overflow用户
提问于 2016-02-06 19:06:45
回答 3查看 1.3K关注 0票数 1

我正在尝试颠倒QStringList中的单词。下面是到目前为止的代码,但我一直收到"Index out of Range“错误。从错误中看,我似乎正在尝试使用超出范围的数据,但无法解决我的问题。

代码语言:javascript
复制
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(" ");`

谢谢

EN

回答 3

Stack Overflow用户

发布于 2016-02-06 21:55:02

正如@ThorngardSO所指出的,reversedlist最初是空的,您正在尝试访问循环代码中的无效索引。应使用以下函数之一将值添加到列表中:

  • STL-compatible函数push_back() (在push_back)
  • Qt函数的代码末尾处插入值(在列表的起始代码处插入值)
  • Qt函数append() (push_back)
  • Qt函数的Qt alternative <

>C17append()( push_front)的Qt alternative

如您所见,prepend()在列表的开始处插入元素,这就是为什么它使列表的反转非常简单的原因:

代码语言:javascript
复制
for (int i = 0; i < list.length(); ++i) {
    reversedlist.prepend(list[i]);
}

另外,请注意在您的循环中有一个拼写错误的:它应该是++i而不是++1

票数 2
EN

Stack Overflow用户

发布于 2016-02-06 20:01:30

您的reversedList最初是空的。您必须实际附加这些项,如下所示:

代码语言:javascript
复制
reversedlist.push_back (list[list.length () - 1 - i]);

当然,尝试通过reversedList[i]访问不存在的项是行不通的,并且会抛出index-out-out-range错误。

票数 1
EN

Stack Overflow用户

发布于 2016-02-06 20:10:31

您的索引超出了范围,因为在QStringList反转列表中没有刺痛。因此,当您的代码到达reversedlist行时,它会抛出"index out of range“错误。你可以使用和不能赋值来读取值。如果要将该值分配给QStringList的特定索引。

代码语言:javascript
复制
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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35240259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档