如何在QStringList
类型中访问vector<string>
的元素。 push_back
不起作用。 insert
也只需要另一个vector
类型。
#include <QtCore/QCoreApplication>
#include <QDebug>
#include <QStringList>
#include <vector>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
std::vector<string> vec;
QString winter = "December, January, February";
QString spring = "March, April, May";
QString summer = "June, July, August";
QString fall = "September, October, November";
QStringList list;
list << winter;
list += spring;
list.append(summer);
list << fall;
qDebug() << "The Spring months are: " << list[1] ;
qDebug() << list.size();
for(int i=0;i<list.size();i++)
{
//vec.push_back(list[i]);
}
exit(0);
return a.exec();
}
答案 0 :(得分:2)
QString不是std :: string。您不能将它直接添加到std :: string的向量中。你必须先将它转换为std :: string。
此外,QString是一个UTF-16字符串,并且与UTF-8 std :: string不兼容,因此可以像这样使用std :: wstring
for(int i=0;i<list.size();i++)
{
vec.push_back(list[i].constData());
}
或者像这样的std :: string:
for(int i=0;i<list.size();i++)
{
vec.push_back(list[i].toUtf8().constData());
}
希望这有效/帮助
来源:
答案 1 :(得分:2)
我会这样做:
foreach( QString str, list) {
vec.push_back(str.toStdString());
}