我从一个文件中读取了两个 QStrings (ValueOne,ValueTwo) (只是一个基本示例)
int main(int argc, char *argv[]) {
QString x = ("yes "
"start ValueOne end"
"no"
"start ValueTwo end");
//try to read ValueOne
QString s = "start";
QString e = "end";
int start = x.indexOf(s, 0, Qt::CaseInsensitive);
int end = x.indexOf(e, Qt::CaseInsensitive);
if(start != -1){
QString y = x.mid(start + s.length(), (end - (start + s.length())));
qDebug() << y << (start + s.length()) << (end - (start + s.length()));
//try to read ValueTwo
QString s2 = "start";
QString e2 = "end";
int start2 = x.indexOf(s2, 0, Qt::CaseInsensitive);
int end2 = x.indexOf(e2, Qt::CaseInsensitive);
if(start2 != -1){
QString y2 = x.mid(start2 + s.length2(), (end2 - (start2 + s.length2())));
qDebug() << y2 << (start2 + s.length2()) << (end2 - (start2 + s.length2()));
}
}
如您所见,ValueOne 和 ValueTwo 仅通过“start”和“end”无法区分,因为两个 QString::mid() 方法(据我所知逐行进行)具有相同的起始位置和相同的长度(参见http://qt-project.org/doc/qt-4.8/qstring.html#mid)。因此我想如果整个字符串是一行
QString x = "yes start ValueOne end no start ValueTwo end ";
我可以用 QString s = "yes start" 和 QString s2 = "no start" 来区分这两个值。那么将多行字符串转换为单行字符串是一种解决方案,我该怎么做?或者还有其他更好的解决方案吗?问候