【问题标题】:Deleting N first chars from string从字符串中删除 N 个第一个字符
【发布时间】:2012-09-23 10:05:35
【问题描述】:

我想从 C++ 中的字符串中删除前 10 个字符。我该怎么做?

【问题讨论】:

    标签: c++ string character


    【解决方案1】:

    我怀疑这里有更多代码你没有显示,问题很可能在那里。

    这段代码运行良好:

    #include <string>
    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char **argv)
    {
        string imgURL = "<img src=\"http://imgs.xkcd.com/comics/sky.png";
    
        string str = imgURL;
        int urlLength = imgURL.length();
        urlLength = urlLength-10;
        str.erase (str.begin(), str.end()-urlLength);
        imgURL = str;
    
        cout << imgURL << endl;
    
        return 0;
    }
    

    话虽如此,正如其他人所提到的,有更短的方法可以做到这一点。

    【讨论】:

      【解决方案2】:

      使用std::string::substr

      try {
         str = str.substr(10);
      } catch (std::out_of_range&) {
           //oops str is too short!!!
      }
      
      1. http://www.cplusplus.com/reference/string/string/substr/

      【讨论】:

      • 感谢这个也能正常工作而不会崩溃,但是第二个要短一些。
      • @Paul 在写作时确实更短-但我必须说 str.erase(size_t,size_t) 在您的情况下具有更好的性能。
      • 很高兴知道,我的整个应用程序非常耗时。
      • 我的意思是迈克尔的版本在性能上更好。选择他的。 (说实话很难:-()
      【解决方案3】:

      像这样:

      str.erase(0,10);
      

      ...

      【讨论】:

      • 嗯,是的。我试过 str.erase(str.begin(), str.end()+10);这也让我在 <.> 之前崩溃了
      • str.begin(), str.begin() + 10
      • 在大字符串上比 str=str.substr(10) 快 8:11。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多