C++ C+中的strtok()模拟+;
我就是找不到一种算法,可以用许多分隔符将字符串分割成单词。我知道如何用C++ C+中的strtok()模拟+;,c++,c,delimiter,C++,C,Delimiter,我就是找不到一种算法,可以用许多分隔符将字符串分割成单词。我知道如何用istringstream按空格拆分字符串,用getline按单个分隔符拆分字符串。我怎样才能把它们全部连接起来 例如: 输入:This-is-a!,弦 输出: This is a string 我建议在Boost中使用String(String算法),参见.P/>< P>为什么不只是代码>包含< /代码>,在C++程序中使用 STD::Strtok()/? #include <iostream> #
istringstream
按空格拆分字符串,用getline
按单个分隔符拆分字符串。我怎样才能把它们全部连接起来
例如:
输入:This-is-a!,弦代码>
输出:
This
is
a
string
我建议在Boost中使用String(String算法),参见.P/>< P>为什么不只是代码>包含< /代码>,在C++程序中使用<代码> STD::Strtok()/<代码>?
#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;
}
#包括
#包括
使用名称空间std;
void SplitToVector(vector&v、字符串dlm、字符串src){
字符串::size_type p,start=0,len=src.length();
v、 清除();
开始=src.find_first_not_of(dlm);
p=src.find_first_of(dlm,start);
while(p!=string::npos){
v、 推回(src.substr(启动,p-start));
start=src.find_first_not_of(dlm,p);
p=src.find_first_of(dlm,start);
}
if(len>start)//rest
v、 推回(src.substr(启动,len-start));
}
内部主(空){
字符输入[256]=“This-is-a!,string;”;
向量v;
int i,大小;
拆分向量(v,“-!,;”,输入);
//cUT你可能会在这里找到一个:你可以使用ReXEX与STD库:还有。你看,我用它来做考试,所以不推荐使用外部库。我只想使用C++库。非常感谢。这很有用!