用C的strtok()模拟++ [英] strtok() analogue in C++

查看:166
本文介绍了用C的strtok()模拟++的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我只是找不到一个算法被无数分隔符拆分字符串转换成文字。我知道如何用空白的字符串与分裂与 istringtream 单定界符函数getline 。我怎样才能连接它们。

例如:

输入:<!code>这-is-A,字符串; 结果
输出

 

一个


解决方案

 的#include&LT;&iostream的GT;
#包括LT&;串GT;
#包括LT&;矢量&GT;使用命名空间std;无效SplitToVector(矢量&lt;串GT;&安培; V,串DLM,串SRC){
    字符串:: size_type的P,启动= 0,LEN = src.length();    v.clear();
    开始= src.find_first_not_of(DLM);
    P = src.find_first_of(DLM,启动);
    而(P!=字符串::非营利组织){
        v.push_back(src.substr(启动,对启动));
        开始= src.find_first_not_of(DLM页);
        P = src.find_first_of(DLM,启动);
    }
    如果(LEN&GT;启动)//休息
        v.push_back(src.substr(启动,LEN - 启动));
}诠释主要(无效){
    字符输入[256] =这-is-A,串;!;
    矢量&lt;字符串&GT;伏;
    INT I,大小;    SplitToVector(五, - ,;!,输入);
    // COUT&LT;&LT;输入&LT;&LT; ENDL;
    大小= v.size();
    对于(i = 0; I&LT;大小;我++)
        COUT&LT;&LT; v.at(I)所述;&下; ENDL;
    返回0;
}

I just can't find an algorithm to split the string into words by numerous delimiters. I know how to split a string by whitespace with istringtream and by single delimiter with getline. How can I connect them all.

For instance:

input: This -is-a!,string;
output:

This  
is  
a  
string

解决方案

#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;
}

这篇关于用C的strtok()模拟++的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆