Một kiểm tra mã với các ví dụ.
Nếu bạn muốn chuỗi trở lại sử dụng này:
std::string ReplaceString(std::string subject, const std::string& search,
const std::string& replace) {
size_t pos = 0;
while ((pos = subject.find(search, pos)) != std::string::npos) {
subject.replace(pos, search.length(), replace);
pos += replace.length();
}
return subject;
}
Nếu bạn cần thực hiện, đây là một chức năng tối ưu hóa mà sửa đổi chuỗi đầu vào, nó không tạo ra một bản sao của chuỗi:
void ReplaceStringInPlace(std::string& subject, const std::string& search,
const std::string& replace) {
size_t pos = 0;
while ((pos = subject.find(search, pos)) != std::string::npos) {
subject.replace(pos, search.length(), replace);
pos += replace.length();
}
}
Các xét nghiệm:
std::string input = "abc abc def";
std::cout << "Input string: " << input << std::endl;
std::cout << "ReplaceString() return value: "
<< ReplaceString(input, "bc", "!!") << std::endl;
std::cout << "ReplaceString() input string not changed: "
<< input << std::endl;
ReplaceStringInPlace(input, "bc", "??");
std::cout << "ReplaceStringInPlace() input string modified: "
<< input << std::endl;
Output:
Input string: abc abc def
ReplaceString() return value: a!! a!! def
ReplaceString() input string not modified: abc abc def
ReplaceStringInPlace() input string modified: a?? a?? def
Nguồn
2013-02-04 00:14:58
bạn có thể giải thích cách mã của bạn hoạt động không? cảm ơn bạn :) –
Đã thêm nhận xét. –
Đó là một nit nhỏ để chọn, nhưng tên chức năng của bạn có một lỗi đánh máy ("Repalce") mà có vẻ một chút ra khỏi chỗ của bạn, rất thanh lịch và cũng được định dạng, mã. –