2012-06-14 31 views
5

Tôi đang bị rạn não nhỏ: Tôi muốn xóa tất cả các phiên bản của ký tự dòng mới '\n' trong một std::string. Tôi muốn sử dụng STL thay vì hướng dẫn sử dụng, đa lồng nhau cho các vòng lặp; vấn đề duy nhất là tôi đã quên mất cách ...C++ Xóa ký tự khỏi chuỗi bằng STL

Liệu for(...) { std::string::remove_if(...); } ; có hoạt động không? Tôi có thể cần sử dụng std::for_each(...,..., std::string::remove_if(...)); không? Hay cái gì khác được yêu cầu?

Trả lời

19

ý tưởng đầu tiên: thành ngữ remove/xóa:

str.erase(std::remove(str.begin(), str.end(), '\n'), str.end()); 
+1

+1 Để hiệu quả :) – Mahesh

+0

Thật vậy, đây rất có thể là tốt nhất bạn sẽ nhận được. – chris

+4

Tôi cần sử dụng '#include ' để biên dịch. – Westy92

3

Nếu bạn có Boost.Range nó hoạt động thậm chí ngắn hơn:

#include <boost\range\algorithm_ext\erase.hpp> 

boost::remove_erase(str, '\n'); 
+0

Cũng có sẵn theo tên hẹp hơn 'tăng :: phạm vi :: remove_erase' và thông qua một rộng hơn bao gồm' boost/range/algorithm_ext.hpp' – Stein

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