0

重複の可能性:
C++ での文字列の分割

外部ライブラリを使用せずに、テキストの 1 つの文字列を特定の文字 (この場合は ",") に基づいて分割する方法についての提案が必要です

テキスト行は次のとおりです。

Amadeus,Drama,160 Mins.,1984,14.83
As Good As It Gets,Drama,139 Mins.,1998,11.3
Batman,Action,126 Mins.,1989,10.15
Billy Elliot,Drama,111 Mins.,2001,10.23
BR,SF,117,1982,11.98
Shadowlands,Drama,133 Mins.,1993,9.89
Shrek,Animation,93 Mins,2001,15.99
Snatch,Action,103 Mins,2001,20.67
The Lord of the Rings,Fantasy,178 Mins,2001,25.87
4

2 に答える 2

1

他のライブラリに頼りたくない場合(Boost.Tokenizerは良い選択IMOです)、これを行うための簡単なコードを次に示します。

#include <string>
#include <vector>

using namespace std;

vector<string> tokenize(string const& s, string const& separator)
{
    size_t start = 0;
    size_t pos = s.find(separator);

    vector<string> v;
    while (pos != string::npos)
    {
        string sub = s.substr(start, pos - start);
        v.push_back(sub);

        start = pos + 1;
        pos = s.find(separator, start);
    }

    string sub = s.substr(start, pos - start);
    v.push_back(sub);

    return v;
}

int main()
{
    string s = "asfa,adf,daf,c";
    vector<string> v = tokenize(s, ",");

    // Do what you want with v...

    return 0;
}
于 2013-01-13T18:37:09.870 に答える
0

コンマのインデックスを見つけてベクトルに格納し、string::substr (http://www.cplusplus.com/reference/string/string/substr/) を使用してそれらのインデックス間の部分文字列を取得するだけです。

于 2013-01-13T18:29:51.940 に答える