2016-08-17 12 views
0

Я хочу, чтобы вставить несколько слов QString, но я не знаю, как это сделать. я попробовать с Vector, как это:Создайте массив QString из двух измерений с QVector с Qt

int i = 10; 
int j = 10; 
QVector < QVector < QString> > tableau; 
QString word = "Word"; 
tableau[i][j] = word; 

Но это не работает. Это сообщение об ошибке:

ASSERT failure in QVector<T>::operator[]: "index out of range" 

А есть попробовать с станд :: вектор и станд :: строки, но это не работает в

Так что вы можете объяснить мне, как создать строковый массив два измерения, чтобы положить слово Thanks

+3

Вы создаете 'QVector', который имеет размер и емкость 0 - в первую очередь необходимо, чтобы заполнить его с элементами используя 'append' [официальная ссылка] (http://doc.qt.io/qt-5/qvector.html#append) – UnholySheep

ответ

1

Предполагая, что вы пытаетесь создать таблицу (для которой QVector<QVector<T>> - не лучший выбор), вы должны сначала ее инициализировать.

Что-то вроде:

QVector<QVector<QString>> CreateTableau(int sizeX, int sizeY) 
{ 
    QVector<QVector<QString>> result; 
    for (int idx1 = 0; idx1 < sizeX; idx1++) 
    { 
     result.append(QVector<QString>()); 
     for (int idx2 = 0; idx2 < sizeY; idx2++) 
     { 
     result[idx1].append(QString()); 
     } 
    } 
    return result; 
} 

тогда вы называете это нравится:

int i = 10; 
int j = 10; 
QVector<QVector<QString>> tableau = CreateTableau(100, 100); //TODO: replace with appropriate sizes. 
QString word = "Word"; 
tableau[i][j] = word; 
+0

Кто-то мне помогает, и он дает мне то, что отлично работает: QVector > tableur (QVector > (10, QVector (10, ""))); tableur [1] [1] = "Mmot"; qDebug() << tableur [1] [1]; –

 Смежные вопросы

  • Нет связанных вопросов^_^