splitstring separar por comas php c++ arrays explode equivalent

separar - ¿Hay un equivalente en C++ de la función de explosión de PHP?



std:: string split (2)

Aquí hay una implementación de ejemplo simple:

#include <string> #include <vector> #include <sstream> #include <utility> std::vector<std::string> explode(std::string const & s, char delim) { std::vector<std::string> result; std::istringstream iss(s); for (std::string token; std::getline(iss, token, delim); ) { result.push_back(std::move(token)); } return result; }

Uso:

auto v = explode("hello world foo bar", '' '');

Nota: la idea de @ Jerry de escribir en un iterador de salida es más idiomática para C ++. De hecho, puede proporcionar ambos; una plantilla de iterador de salida y una envoltura que produce un vector, para una máxima flexibilidad.

Nota 2: Si desea omitir tokens vacíos, agregue if (!token.empty()) .

Posible duplicado:
Dividiendo una cadena en C ++

En PHP, la función explode() tomará una cadena y la cortará en una matriz que separa cada elemento por un delimitador específico.

¿Hay una función equivalente en C ++?


La biblioteca estándar no incluye un equivalente directo, pero es bastante fácil de escribir. Sin embargo, al ser C ++, normalmente no querrá escribir específicamente en una matriz, sino que normalmente querrá escribir la salida en un iterador, para que pueda ir a una matriz, vector, flujo, etc. algo en este orden general:

template <class OutIt> void explode(std::string const &input, char sep, OutIt output) { std::istringstream buffer(input); std::string temp; while (std::getline(buffer, temp, sep)) *output++ = temp; }