0

istringstream文字列のトークンを分割するために使用しています。次のような文字列があるとします。

print "this is a test"

それを 5 つのトークンに分割します。

印刷 | 「これは | は | テストです」

2 つのトークンを生成する場所:

印刷 | "これはテストです"

それを修正する良い方法はありますか?テキスト内の引用符を見つけて部分文字列を実行することで、手動で実行しようとしましたが、あまりにも面倒です。

もっと簡単な方法があるはずだと思いますか、istringstreamそれを行う方法はありますか?

4

2 に答える 2

1

を使用してこれを行うこともできますがwordexp、コマンド シェルを使用して解析を行うため、制限があります。特に、リダイレクトを処理するシェル シンボルにひどく反応します。また、環境変数の展開も行いますが、これは必要な場合とそうでない場合があります。

wordexp_t result;
wordexp(cmdstr.c_str(), &result, 0);
for (int i = 0; result.we_wordv[i]; ++i) {
    //...
}
wordfree(&result);

詳細については、wordexpman ページを参照してください。

于 2013-03-12T15:14:22.427 に答える
1

iostream は .. token でトークン化します。この場合、トークンはスペースで区切られます。あなたは一行一行 (あるいは全部!) を読んで、自分で適切に解析する必要があります。

于 2013-03-12T15:01:07.627 に答える