2012-06-14 30 views
5

Küçük bir beyin osurduğum: '\n' satır karakterinin tüm örneklerini std::string içinde kaldırmak istiyorum. STL'yi mandallar yerine çoklu-yuvanın yerine kullanmayı tercih ederim; tek sorun ne olduğunu unuttum ...C++ Karakter dizisini STL kullanarak kaldırma

for(...) { std::string::remove_if(...); } ; çalışır? std::for_each(...,..., std::string::remove_if(...));'u kullanmam gerekebilir mi? Yoksa başka bir şey ister miydi?

cevap

19

İlk fikri : remove/silme deyim: Eğer Boost.Range varsa çalışır

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

+1 :) – Mahesh

+0

Aslında bu büyük olasılıkla alacağın en iyisi. – chris

+4

Bunun için #include 'yi kullanmam gerekiyordu. – Westy92

3

daha kısa: verimlilik için

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

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

Ayrıca "boost :: range :: remove_erase" adlı daha dar bir adla ve daha geniş bir yelpazede "boost/range/algorithm_ext.hpp" – Stein