Supposons que j'ai une chaîne comme ci-dessousObtenir un mot ou une chaîne sous de chaîne principale lorsque char « » de RHS se trouve, puis effacer reste
entrée ="\\ chemin \ myfiles Ceci est mon aiguillon "
sortie =myfiles
de RHS lorsque le premier caractère '\' est trouvé à passer le mot (c.-à-myfiles) et effacez le reste. Ci-dessous est mon approche je fatigué mais c'est mauvais parce qu'il y a une erreur d'exécution comme ABORTED TERMINE AVEC UN NOYAU.
Veuillez suggérer le moyen le plus propre et/ou le plus court pour obtenir un seul mot (c.-à-d. MYFILES) de la chaîne ci-dessus?
Je recherche et essayer de deux derniers jours, mais pas de chance .please aider
Note: La chaîne d'entrée dans l'exemple ci-dessus ne hardcoded comme il doit être .La chaîne contient des changements dynamiquement mais char « \ 'disponible à coup sûr.
std::regex const r{R"~(.*[^\\]\\([^\\])+).*)~"} ;
std::string s(R"(" //PATH//MYFILES This is my sting "));
std::smatch m;
int main()
{
if(std::regex_match(s,m,r))
{
std::cout<<m[1]<<endl;
}
}
}
Vraiment pas de raison d'utiliser une regex ici. Vous pouvez utiliser 'find_last_of' et' find' en conjonction avec 'substr' pour obtenir le mot assez facilement. – NathanOliver
je vous remercie pour la réponse pouvez-vous s'il vous plaît montrer avec un petit exemple – user7953556
Je me souviens d'une question * très * similaire à celui-ci affiché ce matin. Il contenait plusieurs suggestions utiles mais il semble qu'il ait été supprimé depuis ... –