У меня возникла проблема.
По какой-то причине, несмотря на то, что у меня есть значение в QString, выполнение append () для QVector не работает, и в итоге я все равно получаю толькопустой вектор.
QList<QVariant> listServers = mapRepos.values ( "servers" ); // Finally, the last data structure, for holding server lists.
// Populate the repository information with the server lists.
for ( int i = 0; i < listServers.size(); ++i ) {
for ( int j = 0; j < listServers.at ( i ).toList().size(); ++j ) {
std::cout << "On file: " << listServers.at ( i ).toList().at ( j ).toString().toStdString() << std::endl;
std::cout << "Type #: " << listServers.at ( i ).toList().at ( j ).type() << std::endl;
buffer3 = listServers.at ( i ).toList().at ( j ).toString();
std::cout << "In buffer: (" << buffer3.toStdString() << ")" << std::endl;
arrayRepos.value ( j ).urls.append ( buffer3 );
std::cout << "In memory: " << arrayRepos.value ( i ).urls.value ( i ).toStdString() << std::endl;
}
}
}
Это соответствующий фрагмент в исходном файле.Первый cout возвращает URL, второй URL возвращает 10 (что в соответствии с документацией означает, что QVariant содержит строку, которая является правильной. Третий cout выводит строку правильно. Затем последний выводит строку без строки. Обратите внимание на наличиетам есть строка добавления. Весь мой здравый смысл программирования говорит мне, что вектор должен быть заполнен сейчас, но если взглянуть на его размер, то он равен 0, что означает, что QString не вставлен.
URL-адреса QVectorявляется частью struct:
struct repo {
QString name; // Имя репозитория.
QVector <QString>
urls; // Адрес сервера или списка зеркал.
};
Имя QString является частью более раннего бита кода, который работает нормально и не имеет отношения к этой проблеме.
Я не могу придумать причину, почему append () или push_back () не сработает.