0

文字列があり、文字「,」が表示されるたびに分割したいと考えています。結果を文字列へのポインタのベクトルに保存したい。これを行う最善の方法は何ですか?

4

3 に答える 3

0

以前はstrtok文字列をトークン化していましたが、これにはいくつかの欠点があります。

  • これは の一部でcstringあり、オブジェクトではなく C スタイルの文字列に使用されstd::stringます。
  • 最初のパラメータを変更してから何度も呼び出さなければならないという点で、ちょっと不器用です。

ブーストが利用できる場合は理想的ではありませんが、C++ のすべての実装で機能するはずです。

于 2013-11-09T22:20:35.383 に答える
0

boost::algorithm::split

または、自分で書いてください。このアルゴリズムは、 の観点から非常に簡単に記述できstd::findます。

于 2013-11-09T22:13:43.767 に答える
0

「イワナのたびに分割したい','…」

std::getline区切り文字 (最後の引数) を使用して指定します','

「結果を文字列へのポインタのベクトルに保存したい」

ポインターのベクトルの使用を避けたいと思います。std::vector<std::string>代わりに使用してください:

std::istringstream is(",,,my,,weird,string");

std::vector<std::string> tokens;
std::string token;
while (std::getline(is, token, ',')) {
    if (!token.empty())
        tokens.push_back(token);
}

for (int i = 0; i < tokens.size(); ++i)
    std::cout << tokens[i] << " ";

出力しますmy weird string。を忘れないでください#include <sstream>

于 2013-11-09T22:13:46.690 に答える