2

区切り文字を分割文字列の一部として保持しながら、複数の区切り文字で文字列 (C または C++) を分割する良い方法はありますか? これを行う唯一の方法は正規表現を使用することであり、これを行うためだけに別のライブラリを取り込む必要はありませんか? (Boost を使用せずに、文字列に STL を使用しています)。

4

2 に答える 2

4

正規表現がなければ、速いか遅いかはわかりません:

vector<string> split(string& stringToSplit)
{
    vector<string> result;
    size_t pos = 0, lastPos = 0;
    while ((pos = stringToSplit.find_first_of(";,|", lastPos)) != string::npos)
    {
        result.push_back(stringToSplit.substr(lastPos, pos-lastPos+1));
        lastPos = pos+1;
    }
    result.push_back(stringToSplit.substr(lastPos));
    return result;
}
于 2013-07-04T18:48:27.527 に答える