3

我只是找不到一种算法来通过众多分隔符将字符串拆分为单词。我知道如何用空格istringtream单个分隔符分割字符串getline. 我怎样才能将它们全部连接起来。

例如:

输入This -is-a!,string;
输出

This  
is  
a  
string
4

3 回答 3

2

为什么不只是在你的 C++ 程序中#include <cstring>使用呢?std::strtok()

于 2013-05-29T07:59:30.393 回答
1
#include <iostream>
#include <string>
#include <vector>

using namespace std;

void SplitToVector(vector<string> &v, string dlm, string src){
    string::size_type p, start=0, len=src.length(); 

    v.clear();
    start = src.find_first_not_of(dlm);
    p = src.find_first_of(dlm, start);
    while(p != string::npos){
        v.push_back(src.substr(start, p-start));
        start = src.find_first_not_of(dlm, p);
        p = src.find_first_of(dlm, start);
    }
    if(len>start)//rest
        v.push_back(src.substr(start, len - start));
}

int main(void){
    char input[256] = "This -is-a!,string;";
    vector<string> v;
    int i, size;

    SplitToVector(v, "-!,;", input);
    //cout << input << endl;
    size = v.size();
    for(i=0; i<size; i++)
        cout << v.at(i) << endl;
    return 0;
}
于 2013-05-29T08:20:21.623 回答
0

我建议拆分提升(字符串算法),请参阅http://www.boost.org/doc/libs/1_53_0/doc/html/string_algo/usage.html#idp163440592

于 2013-05-29T07:05:41.727 回答