c++ - 在 C++ 中使用多个分隔符(包括分隔符)拆分字符串
问题描述
我有一个字符串,我输入如下
using namespace std;
string s;
getline(cin, s);
我输入
ab~cd
我想拆分字符串,.
但~
也想存储分隔符。拆分后的元素将存储在向量中。
最终输出应如下所示
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));
}
我还没有测试过代码,但基本的想法是你也想在结果中存储分隔符。
推荐阅读
- android - Android检测相机是否拍摄图像
- java - List addAll(aList) then aList.clear(): 如果实现既不是 ArrayList 也不是 LinkedList,我会得到 null 吗?
- python - 将列表列表转换为数据框列
- sql - 基于另一个列值合并列值 - TSQL
- javascript - 使用键盘麦克风在(ipad/移动设备)上听写后保存用于填充文本框的语音
- laravel - 如何在 laravel 查询中编写 where 条件?
- c++ - 如何在 C++ 中将向量拆分为三个变量
- html - 按钮背景错误
- c# - WebAPI 限制外部 HttpClient 调用以等待其他请求的结果
- flutter - Flutter 能否拍一张 Flutter 框架中所有类的类图?像UML图