首页 > 解决方案 > 在 C++ 中使用多个分隔符(包括分隔符)拆分字符串

问题描述

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

using namespace std;

string s;
getline(cin, s);

我输入

ab~cd

我想拆分字符串,.~也想存储分隔符。拆分后的元素将存储在向量中。

最终输出应如下所示

a
.
b
~
c
.
d

我在这里看到了一个解决方案,但它是在 java 中。

我如何在 C++ 中实现这一点?

标签: c++string

解决方案


该解决方案是从该答案中逐字复制的,但注释行除外:

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

我还没有测试过代码,但基本的想法是你也想在结果中存储分隔符。


推荐阅读