文字列があり、文字「,」が表示されるたびに分割したいと考えています。結果を文字列へのポインタのベクトルに保存したい。これを行う最善の方法は何ですか?
2215 次
3 に答える
0
以前はstrtok
文字列をトークン化していましたが、これにはいくつかの欠点があります。
- これは の一部で
cstring
あり、オブジェクトではなく C スタイルの文字列に使用されstd::string
ます。 - 最初のパラメータを変更してから何度も呼び出さなければならないという点で、ちょっと不器用です。
ブーストが利用できる場合は理想的ではありませんが、C++ のすべての実装で機能するはずです。
于 2013-11-09T22:20:35.383 に答える
0
または、自分で書いてください。このアルゴリズムは、 の観点から非常に簡単に記述でき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 に答える