什么是基于特定分隔符拆分字符串的最有效的C++方法,类似于python中的split方法?

-6 c++ string split

getline(cin,s);
istringstream iss(s);
do
{
    string sub;
    iss>>sub;
    q.insert(sub);
 }while(iss);
Run Code Online (Sandbox Code Playgroud)

当问题想让我在空间的基础上分裂时,我使用了这种技术,所以任何人都可以解释如何在有一个特定的分隔符时分裂,如';' 要么 ':'.

有人告诉我关于strtok功能,但我无法得到它的用法所以如果有人可以提供帮助会很好.

Jam*_*nze 12

首先,不要使用strtok.永远.

标准库中没有真正的功能.我使用类似的东西:

std::vector<std::string>
split( std::string const& original, char separator )
{
    std::vector<std::string> results;
    std::string::const_iterator start = original.begin();
    std::string::const_iterator end = original.end();
    std::string::const_iterator next = std::find( start, end, separator );
    while ( next != end ) {
        results.push_back( std::string( start, next ) );
        start = next + 1;
        next = std::find( start, end, separator );
    }
    results.push_back( std::string( start, next ) );
    return results;
}
Run Code Online (Sandbox Code Playgroud)

我相信Boost有很多这样的功能.(在Boost之前很久我实现了我的大部分.)