c++ - 如何使用c ++从字符串中删除开头和后面的撇号
问题描述
从字符串中删除第一个和最后一个撇号时遇到了一些麻烦。我有一个字符串向量,其中一些在字符串的开头或后面有撇号。例如,我有 {'cause, 'til, holdin', don't} 我想要这样的输出 {cause, til, holdin, don't} 我该怎么做?
解决方案
.erase()
您可以使用成员函数从字符串中删除字符。例子:
#include <iostream>
#include <string>
#include <vector>
void trim_inplace(std::string &s, char c) {
if (s.size() >= 2) {
auto it = s.begin();
if (*it == c) {
s.erase(it);
}
it = s.end() - 1;
if (*it == c) {
s.erase(it);
}
}
}
int main() {
std::vector<std::string> foo{"'cause", "'til", "holdin'", "don't"};
for (auto &s : foo) {
std::cout << s << " -> ";
trim_inplace(s, '\'');
std::cout << s << '\n';
}
return 0;
}
推荐阅读
- angular - Angular 8 轮询使用 Observables
- r-markdown - 缩小 knitR 文档中标题、作者和日期之间的间距,并将标题进一步向上移动
- javascript - 如何在使用绑定将数据传递给侦听器时删除事件侦听器?
- php - 我的搜索框无法识别 0 之类的字符 PHP
- swift - 如何快速对具有特定名称的多维数组进行排序?
- c# - ViewModel 构造函数如何获取所需的接口?
- activemq-artemis - 在 ActiveMQ Artemis 中,从队列中重新传递是无序的
- css - 如何为 ng-select 创建自定义样式
- jms - 为单个请求禁用 Istio/Zipkin 拦截器?
- javascript - 如何获取哪个路由称为组件