QSTRING複数のデリミターを分割します
質問
QStringを適切に分割するのに苦労しています。私が間違っていない限り、複数の区切り文字のために私は正規表現が必要であり、私は彼らにとって非常に新しいので表現を理解することはできないようです。
文字列はファイルからのテキスト入力です。
F 523/845/1 524/846/2 562/847/3 564/848/4
配列に配置するには、各番号が個別に必要です。
いくつかのコード....
QStringList x;
QString line = in.readLine();
while (!line.isNull()) {
QRegExp sep("\\s*/*");
x = line.split(sep);
ポインターはありますか?
乾杯
解決
このような正規表現を変更してください:
QRegExp sep("(\\s+|/)");
それから x
すべての番号があります。
他のヒント
Regexのインタラクティブに試してみると非常に便利だと思いました。今日では、多くのオンラインツールもあります。たとえば、: http://gskinner.com/regexr/
そこに検索テキストを配置し、Regexで再生して、いつ一致するかを確認できます。
QSTRINGを1つ以上の異なるトークンで分割するSTRTOK関数を使用できます。
このようなものです:
QString a = "f 523/845/1 524/846/2 562/847/3 564/848/4";
QByteArray ba = a.toLocal8Bit();
char *myString = ba.data();
char *p = strtok(myString, " /");
while (p) {
qDebug() << "p : " << p;
p = strtok(NULL, " /");
}
必要なだけ多くのトークンを設定できます。詳細については、この特定の関数のcplusplusページをご覧ください。 http://www.cplusplus.com/reference/cstring/strtok/
よろしく!
所属していません StackOverflow