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/`
}