3

テキスト ファイルからデータを読み取り、引用符に基づいて読み取り行を分割しようとしています。例えば

"Hi how" "are you" "thanks"

期待される出力

Hi how
are you
thanks

私のコード:

getline(infile, line); 
ch = strdup(line.c_str());
ch1 = strtok(ch, " ");

while (ch1 != NULL)
{
    a3[i] = ch1;
    ch1 = strtok(NULL, " ");
    i++;
}

区切り文字列として何を指定すればよいかわかりません。分割に使用strtok()していますが、失敗しました。誰でも私を助けることができますか?

4

2 に答える 2

0

入力が与えられた"Hi how" "are you" "thanks"場合: を区切り文字として使用するstrtok"\""、引用符で囲まれた文字列間のスペースも文字列であるかのように扱われるため、(たとえば) 結果の文字列を 1 行に 1 つずつ四角で囲んで出力した場合角かっこ、あなたは得るでしょう:

[Hi how]
[ ]
[are you]
[ ]
[thanks]

つまり、引用符で囲まれた各文字列の間の空白文字は、それ自体が文字列として扱われます。指定した区切り文字strtokが(つまり、引用符とスペースの両方が含まれている)場合" \""は発生しませんが、引用符で囲まれた文字列内のスペースでも壊れます。

引用されることに関心のあるすべてのアイテムに依存できると仮定すると、引用に到達するまで何もスキップし、引用を無視し、別の引用に到達するまで入力文字列にデータを読み取り、プロセス全体を繰り返します。

于 2013-04-10T05:54:54.540 に答える