0

カンマ区切りの値を含むがstd::stringあります。これらの値を配列、ベクトル、その他のコンテナなどの適切なコンテナに保存する必要があります。これを実行できる組み込み関数はありますか?または、このためのカスタムコードを作成する必要がありますか?

4

4 に答える 4

3

Boostライブラリを使用する意思があり、使用できる場合は、BoostTokenizerがこのタスクに非常に適しています。

それは次のようになります:

std::string str = "some,comma,separated,words";
typedef boost::tokenizer<boost::char_separator<char> > tokenizer;
boost::char_separator<char> sep(",");
tokenizer tokens(str, sep);
std::vector<std::string> vec(tokens.begin(), tokens.end());
于 2011-06-06T05:12:09.400 に答える
2

,基本的に、区切り文字として使用して文字列をトークン化する必要があります。この初期のStackoverflowスレッドはそれを支援します。

ここに別の関連する投稿があります。

于 2011-06-06T05:13:24.203 に答える
0

AXパーサジェネレータを使用すると、csv文字列を簡単に解析できます。

std::string input = "aaa,bbb,ccc,ddd";
std::vector<std::string> v; // your strings get here
auto value = *(r_any() - ',') >> r_push_back(v); // rule for single value
auto csv = *(value & ',') & value & r_end(); // rule for csv string
csv(input.begin(), input.end());

免責事項:上記のコードはテストしていません。表面的なエラーが発生している可能性があります。

于 2011-06-06T05:24:28.020 に答える
0

標準ライブラリには利用できるものはないと思います。私は次のようにアプローチします-

  1. ,を使用して、デリメータに基づいて文字列をトークン化しstrtokます。
  2. 関数を使用して整数に変換しatoiます。
  3. push_backベクトルへの値。

Boostライブラリに慣れている場合は、このスレッドを確認してください

于 2011-06-06T05:14:27.543 に答える