#include <iostream>
#include <vector>
using namespace std;
vector<string> split(string s,string delimiter){
vector<string> res;
s+=delimiter; //adding delimiter at end of string
string word;
int pos = s.find(delimiter);
while (pos != string::npos) {
word = s.substr(0, pos); // The Word that comes before the delimiter
res.push_back(word); // Push the Word to our Final vector
s.erase(0, pos + delimiter.length()); // Delete the Delimiter and repeat till end of String to find all words
pos = s.find(delimiter); // Update pos to hold position of next Delimiter in our String
}
res.push_back(s); //push the last word that comes after the delimiter
return res;
}
int main() {
string s="~!hello~!random junk... ~!world~!";
vector<string>words = split(s,"~!");
int n=words.size();
for(int i=0;i<n;i++)
std::cout<<words[i]<<std::endl;
return 0;
}
Вышеупомянутая программа найдет все слова, которые встречаются до, между и после указанного вами разделителя . Внеся незначительные изменения в функцию, вы можете настроить ее в соответствии с вашими потребностями (например, если вам не нужно искать слово, которое встречается перед первым или последним разделителем).
Но для ваших нужд данная функция выполняет правильное разбиение слов в соответствии с указанным вами разделителем.
Надеюсь, это решит ваш вопрос!