用C的strtok()模拟++ [英] strtok() analogue in C++
本文介绍了用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屋!
查看全文