【问题标题】:How to replace all occurrances of a substring with a space in c++ string [duplicate]如何用c ++字符串中的空格替换所有出现的子字符串[重复]
【发布时间】:2015-12-24 01:01:53
【问题描述】:

我有一个函数可以从 c++ 字符串中删除所有出现的子字符串。但我希望它在删除每个子字符串之前或之后插入空格。如果在下面给出我的功能:

    void removeSubstrs(string& s, string& p) {
    string::size_type n = p.length();
    for (string::size_type i = s.find(p);
        i != string::npos;
        i = s.find(p))
        s.erase(i, n);
}

例如,如果我输入“AZAZBLACKAZAZBERRYAZ”,我想要输出“BLACK BERRY”....

【问题讨论】:

  • i/p AZAZBLACKAZA.. o/p BLACK BERRY,AZ 去哪儿了?

标签: c++ string replace insert


【解决方案1】:

如果你想要的是这样的:

假设“-”为空​​格
输入:“AZAZBLACKAZAZBERRYAZ”和“AZ”
输出:“--BLACK--BERRY-”

那么,这可能会对您有所帮助:

  void removeSubstrs(string& s, string& p) {
    string::size_type n = p.length();
    for (string::size_type i = s.find(p); i != string::npos; i = s.find(p))
    {
        s.replace(i, n, 1, ' ');
        //OR
        //s.erase(i, n);
        //s.inset(i, ' '); //Add this line
    }
}

【讨论】:

  • 你可以用s.replace(i, n, 1, ' ')代替erase/insert。它甚至可能更有效。
  • @Blastfurnace:谢谢,我已将其添加到代码中!
猜你喜欢
  • 1970-01-01
  • 2011-04-17
  • 1970-01-01
  • 2013-12-22
  • 2013-07-10
  • 1970-01-01
  • 2011-02-23
  • 1970-01-01
  • 2012-11-23
相关资源
最近更新 更多