1

内の単語を逆にしようとしていますQStringList。以下はこれまでのコードですが、「インデックスが範囲外です」というエラーが引き続き発生します。エラーから、範囲外のデータを使用しようとしているように見えますが、問題を把握できません。

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(" ");`

ありがとう

4

3 に答える 3

2

@ThorngardSO が指摘したように、reversedlist最初は空で、ループ コードで無効なインデックスにアクセスしようとしています。次の関数のいずれかを使用して、リストに値を追加する必要があります。

  • STL互換関数(リストの最後push_back()に値を挿入)
  • STL互換関数(リストの先頭push_front()に値を挿入)
  • Qt 関数append()(Qt の代替push_back)
  • Qt 関数prepend()(Qt の代替push_front)

ご覧のとおり、リストの先頭prepend()に要素を挿入するため、リストの反転が非常に簡単になります。

for (int i = 0; i < list.length(); ++i) {
    reversedlist.prepend(list[i]);
}

また、ループにタイプミス++iがあることに注意してください++1

于 2016-02-06T13:55:02.340 に答える
1

あなたの reversedList は最初は空です。次のように、実際にアイテムを追加する必要があります。

reversedlist.push_back (list[list.length () - 1 - i]);

当然のことながら、経由で存在しないアイテムにアクセスしようとしても機能reversedList[i]せず、index-out-out-range エラーがスローされます。

于 2016-02-06T12:01:30.490 に答える
0

QStringList reversedlist 内に文字列がないため、範囲外のインデックスを取得しました。したがって、コードが reversedlist[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;
于 2016-02-06T12:10:31.203 に答える