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++中实现这一点,我们需要一个适当的最小可复制示例。