Dividindo uma string em C++ por delimitador (string delimiter) — como fazer split?
Olá a todos! Acabei de começar a aprender C++ e me deparei com uma tarefa que em outras linguagens é resolvida com uma única função. Preciso dividir uma string em partes por um delimitador (por exemplo, por um caractere de vírgula ou por uma substring "::").
Em Python, escrevo `"a,b,c".split(",")` e obtenho uma lista. Em C++, não consigo encontrar nada parecido na biblioteca padrão. Existe `strtok` do C, mas ele trabalha com `char*`, e eu preciso trabalhar com `std::string`. Além disso, `strtok` modifica a string original e não é thread-safe.
Tentei escrever minha própria solução caseira, mas ela funciona de forma estranha:
```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;
}
```