2012-06-14 21 views
5

estoy teniendo un pequeño pedo cerebral: Me gustaría para eliminar todas las instancias del carácter de nueva línea '\n' en un std::string. Preferiría usar el STL en lugar de bucles manuales, multi-anidados para bucles; el único problema es que he olvidado lo ...C++ Extracción de caracteres de cadena usando STL

Would for(...) { std::string::remove_if(...); } ; trabajo? ¿Necesito usar std::for_each(...,..., std::string::remove_if(...));? ¿O se requeriría algo más?

Respuesta

19

primera idea: el lenguaje de Eliminar/Borrar:

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

+1 Para la eficiencia :) – Mahesh

+0

De hecho, esto es más probable lo mejor que obtendrás – chris

+4

que necesitaba usar '' # include para este compilar. – Westy92

3

Si tiene Boost.Range funciona aún más corto:

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

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

También disponible bajo el nombre 'estrecho rango de impulso :: :: remove_erase' ya través de un impulso incluir'/gama/algorithm_ext.hpp' más amplio – Stein

Cuestiones relacionadas