首页 > 解决方案 > 如何使用c ++从字符串中删除开头和后面的撇号

问题描述

从字符串中删除第一个和最后一个撇号时遇到了一些麻烦。我有一个字符串向量,其中一些在字符串的开头或后面有撇号。例如,我有 {'cause, 'til, holdin', don't} 我想要这样的输出 {cause, til, holdin, don't} 我该怎么做?

标签: c++stringc++11character

解决方案


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

推荐阅读