ファイルから2つのQString(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 を区別できません。これは、両方の QString::mid() メソッド (私の知る限り行ごとに進む) の開始位置が同じであるためです。および同じ長さ ( http://qt-project.org/doc/qt-4.8/qstring.html#midを参照)。したがって、文字列全体が次のような1行であるかどうかを考えました
QString x = "yes start ValueOne end no start ValueTwo end ";
QString s = "yes start" と QString s2 = "no start" の 2 つの値を区別できます。したがって、複数行の文字列を1行の文字列に変換すると解決策になりますか?どうすればこれを行うことができますか? または別のおそらくより良い解決策はありますか? 挨拶