2010-02-13 22 views
6

Trong mọi ngôn ngữ mà tôi có thể nghĩ ra, trừ C++, hàm Replace về cơ bản thay thế tất cả các phần của một chuỗi, trong khi lớp chuỗi C++ 's không hỗ trợ các hoạt động đơn giản như sau:std :: string :: thay thế việc triển khai chuẩn?

string s = "Hello World"; 
s = s.Replace("Hello", "Goodbye"); 
echo s; // Prints "Goodbye World" 

Điều này có vẻ phổ biến nhất sử dụng bất kỳ loại hàm thay thế chuỗi nào, nhưng dường như không có hàm thay thế tiêu chuẩn trong C++. Am i thiếu cái gì ở đây? EDIT: Tôi biết rằng không có chức năng thay thế tích hợp như thế này trong thư viện chuẩn - Tôi tự hỏi nếu có một hoặc nhiều tiêu chuẩn thực hiện được thực hiện từ các thuật toán tiêu chuẩn hoặc một cái gì đó của loại đó.

+0

tôi luôn có cùng một khiếu nại. Tôi không nghĩ rằng có bất kỳ giải pháp trong STL ngoại trừ việc sử dụng tìm thấy kết hợp với thay thế. – Dave

Trả lời

9

Bạn không bỏ sót bất cứ điều gì, nó không nằm trong thư viện chuẩn.
Bạn có thể tự viết cho mình bằng cách sử dụng find(), replace() v.v. hoặc sử dụng cách triển khai như replace_all() từ Tăng cường string algorithm library.

0

đây không phải là hoàn toàn giống nhau nhưng có một phương pháp thay thế:

#include <iostream> 
#include <string> 

using namespace std; 

int main(void) 
{ 
     string s = "Hello World"; 

     s.replace(0, 5, "Goodbye"); 

     cout << s << endl; 

     return 0; 
} 

bạn có thể dễ dàng viết thay thế bằng cách sử dụng chuỗi :: thấy, chuỗi :: thay thế và một vòng lặp ít

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