División de una cadena en C++ por un delimitador (string delimiter) — ¿cómo hacer split?
¡Hola a todos! Acabo de empezar a aprender C++ y me encontré con una tarea que en otros lenguajes se resuelve con una sola función. Necesito dividir una cadena en partes por un delimitador (por ejemplo, por el carácter de coma o por la subcadena "::").
En Python escribo `"a,b,c".split(",")` y obtengo una lista. En C++ no puedo encontrar nada similar en la biblioteca estándar. Existe `strtok` de C, pero funciona con `char*`, y yo necesito trabajar con `std::string`. Además, `strtok` modifica la cadena original y no es thread-safe.
Intenté escribir mi propia solución, pero funciona mal:
```cpp
#include
#include
std::vector split(std::string s, std::string delimiter) {
size_t pos = 0;
std::vector tokens;
while ((pos = s.find(delimiter)) != std::string::npos) {
std::string token = s.substr(0, pos);
tokens.push_back(token);
s.erase(0, pos + delimiter.length());
}
tokens.push_back(s);
return tokens;
}
```