2012-10-02 187 views

回答

24

像這樣:

str.erase(0,10); 

...

+0

呃是的,這是有效的。我試過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

感謝這一個工程,沒有崩潰,但第二個是短一點。 – 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; 
} 

隨着中說,有更短的方法可以做到這一點,因爲其他人提及。

相關問題