私はC++を初めて使用しています。文字列を区切り文字で分割し、その部分文字列をベクトルに入れることに問題があります。空の文字列をベクトルに格納する方法
vector<string> split(const string &s, const string &delim)
{
string::size_type pos = s.find_first_of(delim,0);
int start = 0;
vector<string> tokens;
while(start < s.size())
{
if(start++ != pos + 1)
tokens.push_back(" ");
pos = s.find_first_of(delim, start);
tokens.push_back(s.substr(start, pos - start));
}
for(vector<string>::size_type i = 0; i != tokens.size(); ++i)
cout << tokens[i];
return tokens;
}
文字列と区切り文字が関数に渡されており、分割を行う次のよう
私のコードです。この関数は、空の文字列をベクトルに入れることを想定していますが、私にとってはそれをしません。例えば
私のようにメイン内の関数を呼び出す場合:出力
int main()
{
split("<ab><>cd<", "<>");
}
"","ab","","","","cd",""
マイナス引用符
すると仮定が、私のコードの出力は、現在あるさ
ab b cd d
助けていただければ幸いです。
が役立つかもしれないいくつかの関連の質問です:http://stackoverflow.com/questions/236129/how-to-split-a-string-in-cます。http:/ /stackoverflow.com/questions/53849/how-do-i-tokenize-a-string-in-c http://stackoverflow.com/questions/4533652/how-to-split-string-using-istringstream-with-その他の区切り文字(空白以外)http://stackoverflow.com/questio ns/5505965/fast-string-split-with-multiple-delimiters –