C++ 在c+中使用多个分隔符(包括分隔符)拆分字符串+;
我有一个字符串,我输入如下C++ 在c+中使用多个分隔符(包括分隔符)拆分字符串+;,c++,string,C++,String,我有一个字符串,我输入如下 using namespace std; string s; getline(cin, s); 我输入 a、 b~c.d 我想在和~处拆分字符串,但还想存储分隔符。分割的元素将存储在向量中 最终输出应该如下所示 a . b ~ c . d 我看到了一个解决方案,但它是用java实现的 我如何在C++中实现这一点? 这个解决方案是逐字复制的,除了注释行: std::stringstream stringStream(inputString); std::strin
using namespace std;
string s;
getline(cin, s);
我输入
a、 b~c.d
我想在
和~
处拆分字符串,但还想存储分隔符。分割的元素将存储在向量中
最终输出应该如下所示
a
.
b
~
c
.
d
我看到了一个解决方案,但它是用java实现的
我如何在C++中实现这一点?
这个解决方案是逐字复制的,除了注释行:std::stringstream stringStream(inputString);
std::string line;
while(std::getline(stringStream, line))
{
std::size_t prev = 0, pos;
while ((pos = line.find_first_of(".~", prev)) != std::string::npos) // only look for . and ~
{
if (pos > prev)
wordVector.push_back(line.substr(prev, pos-prev));
wordVector.push_back(line.substr(pos, 1)); // add delimiter
prev = pos+1;
}
if (prev < line.length())
wordVector.push_back(line.substr(prev, std::string::npos));
}
std::stringstream(inputString);
std::字符串行;
while(std::getline(stringStream,line))
{
标准::尺寸前=0,位置;
while((pos=line.find_first_of(“.~”,prev))!=std::string::npos)//只查找。和~
{
如果(位置>上一个)
wordVector.push_back(line.substr(prev,pos-prev));
wordVector.push_back(line.substr(pos,1));//添加分隔符
上一个=位置+1;
}
如果(上一个
我还没有测试代码,但基本思想是您希望在结果中也存储分隔符。很接近,但不会存储分隔符。应该很容易适应。@–user4581301我看到了许多类似的问题,但解决方案没有在输出中包含分隔符。如上所述,Java中有一个soln。然而,我想在c++中实现这一点,我们需要一个适当的最小可复制示例。