2012-10-02 71 views

Trả lời

24

Như thế này:

str.erase(0,10); 

...

+0

ugh vâng có tác dụng. Tôi đã thử str.erase (str.begin(), str.end() + 10); đã cho tôi một sự cố tốt trước khi <. < Cảm ơn! – PTS

+3

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

+0

Nhanh hơn str = str.substr (10) là 8:11 trên các chuỗi lớn. –

4

Sử dụng 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

Cảm ơn một trong những hoạt động tốt mà không có một vụ tai nạn, thứ hai một tuy nhiên là một chút ngắn hơn. – PTS

+1

@Paul nó thực sự là ngắn hơn trong khi viết - nhưng tôi phải nói rằng str.erase (size_t, size_t) có hiệu suất tốt hơn trong trường hợp của bạn. – PiotrNycz

+0

Điều cần biết, toàn bộ ứng dụng của tôi khá tốn thời gian. – PTS

1

tôi nghi ngờ rằng có là nhiều mã ở đây mà bạn không hiển thị, và vấn đề là có khả năng ở đó.

Mã này chỉ hoạt động tốt:

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

Với những gì đã nói, có những cách ngắn hơn để làm điều này, như những người khác đã đề cập.

Các vấn đề liên quan