2012-10-02 4 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; 
} 

.

관련 문제