2012-10-02 19 views

答えて

24

str.erase(0,10); 

...

+0

ughはい動作します。私はstr.erase(str.begin()、str.end()+ 10)を試しました。 私の前でクラッシュを起こした<< ありがとう! – PTS

+3

str.begin()、str.begin()+ 10 – Arkadiy

+0

大きな文字列の場合はstr = str.substr(10)よりも8:11高速です。 –

4

使用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/
+0

この1つはクラッシュなしで動作しますが、もう1つは少し短くなっています。 – PTS

+1

@Paul書いている間は実際には短くなりますが、str.erase(size_t、size_t)のほうが、あなたのケースでより良いパフォーマンスを持っていると言わなければなりません。 – PiotrNycz

+0

知っておいて、私の全体のアプリケーションはかなり時間がかかります。 – PTS

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

ということで、これを行うには短い方の方法は他の人が言及しているとして、があります。

関連する問題