Avatar ·

Division de chaîne en C++ par délimiteur (string delimiter) — comment faire split ?

Bonjour à tous ! Je viens de commencer à apprendre le C++ et j'ai rencontré une tâche qui, dans d'autres langages, se résout avec une seule fonction. J'ai besoin de diviser une chaîne en parties par un délimiteur (par exemple, par une virgule ou par la sous-chaîne "::"). En Python, j'écris `"a,b,c".split(",")` et j'obtiens une liste. En C++, je ne trouve rien de similaire dans la bibliothèque standard. Il y a `strtok` du C, mais il fonctionne avec `char*`, alors que j'ai besoin de travailler avec `std::string`. De plus, `strtok` modifie la chaîne d'origine et n'est pas thread-safe. J'ai essayé d'écrire ma propre solution, mais elle fonctionne 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; } ```