Avatar ·

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