在C ++中使用多个定界符(包括定界符)分割字符串

时间:2020-09-18 16:35:35

标签: c++ string

我有一个输入如下的字符串

using namespace std;

string s;
getline(cin, s);

我输入

a.b〜c.d

我想在.~处分割字符串,但也想存储定界符。拆分后的元素将存储在向量中。

最终输出应如下所示

a
.
b
~
c
.
d

我看到了一个解决方案here,但它在Java中。

如何在c ++中实现这一目标?

1 个答案:

答案 0 :(得分:1)

此解决方案是从answer逐字复制的,但注释行除外:

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

我还没有测试代码,但是基本思想是您也想在结果中存储定界符。