ソフトウェア開発 C++

文字列を分割する(split)

戻る


文字列を複数の文字列に分割するコードは以下の通り。

#include <iostream>
#include <string>
#include <vector>
using namespace std;

void split(vector<string>& v, char separator, const string& s)
{
    int i = 0, j = s.find_first_of(separator);

    v.clear();
    while(j != -1)
    {
        v.push_back(s.substr(i, j - i));
        i = j + 1;
        j = s.find_first_of(separator, i);
    }
    v.push_back(s.substr(i, -1));
}

void split(vector<string>& v, const string& separators, const string& s)
{
    int i = s.find_first_not_of(separators), n = s.size();

    v.clear();
    while (0 <= i && i < n)
    {
        int stop = s.find_first_of(separators, i);
        if (stop < 0 || stop > n) stop = n;
        v.push_back(s.substr(i, stop - i));
        i = s.find_first_not_of(separators, stop + 1);
    }
}

void print_vector(const vector<string>& v)
{
    size_t i, c = v.size();
    if (c > 0)
    {
        cout << v[0];
        for(i = 1; i < c; i++)
        {
            cout << ", " << v[i];
        }
    }
    cout << endl;
}

#ifdef UNITTEST
int main(void)
{
    vector<string> strVector;
    
    split(strVector, ',', "abc,ABC,DEF,,GHI");
    print_vector(strVector);
    
    split(strVector, " \t", "abc ABC\tDEF \tGHI");
    print_vector(strVector);

    return 0;
}
#endif

単体テストの実行結果は次の通り。

abc, ABC, DEF, , GHI
abc, ABC, DEF, GHI

ソース: split.zip


国内格安航空券サイトe航空券.com

戻る

©片山博文MZ
katayama.hirofumi.mz@gmail.com

inserted by FC2 system