read partir parsear mid from c++ string boost stl

c++ - partir - MĂșltiples tokens divididos usando boost:: is_any_of



substring from a string c++ (3)

El problema que boost::is_any_of toma std::string o char* como parámetro. No es un std::set<std::string> .

Debería definir delims como std::string delims = "/t,|" y luego funcionará.

No estoy seguro de cómo usar boost::is_any_of para dividir una cadena utilizando un conjunto de caracteres, cualquiera de los cuales debe dividir la cadena.

Quería hacer algo como esto, ya que entendí que la función is_any_of toma un parámetro Set.

std::string s_line = line = "Please, split|this string"; std::set<std::string> delims; delims.insert("/t"); delims.insert(","); delims.insert("|"); std::vector<std::string> line_parts; boost::split ( line_parts, s_line, boost::is_any_of(delims));

Sin embargo, esto produce una lista de errores de impulso / STD. ¿Debo persistir con is_any_of o hay una mejor manera de hacerlo, por ejemplo? usando una división de expresiones regulares?


Intentarás esto:

boost::split(line_parts, s_line, boost::is_any_of("/t,|"));


Su primera línea no es una sintaxis válida de C ++ sin una variable preexistente llamada line , y boost::is_any_of no toma un std::set como parámetro de constructor.

#include <string> #include <set> #include <vector> #include <iterator> #include <iostream> #include <boost/algorithm/string.hpp> int main() { std::string s_line = "Please, split|this/tstring"; std::string delims = "/t,|"; std::vector<std::string> line_parts; boost::split(line_parts, s_line, boost::is_any_of(delims)); std::copy( line_parts.begin(), line_parts.end(), std::ostream_iterator<std::string>(std::cout, "/") ); // output: `Please/ split/this/string/` }