Efficace pour tronquer chaîne de longueur N
Par exemple, supposons que j'ai std::string
contenant chemin UNIX des fichiers:
string path("/first/second/blah/myfile");
Supposons maintenant j'ai envie de jeter des informations relatives aux fichiers et obtenir chemin vers 'blah' dossier de cette chaîne. Donc, il y a un système efficace (en disant "efficace", je veux dire "sans copies") façon de tronquer cette chaîne afin qu'elle contient "/first/second/blah"
seulement?
Merci d'avance.
OriginalL'auteur tonytony | 2012-05-12
Vous devez vous connecter pour publier un commentaire.
Si N est connu, vous pouvez utiliser
Si N n'est pas connu et que vous voulez le trouver, vous pouvez utiliser les fonctions de recherche. Dans ce cas, vous 'll voulez trouver le dernier slash, de sorte que vous pouvez utiliser
rfind
oufind_last_of
:Il y a même une variation de cette fonction sur les itérateurs:
Cela dit, si vous allez manipuler des chemins pour un séjour, il est préférable d'utiliser une bibliothèque conçue pour cette tâche, comme Boost Système De Fichiers.
Ou il y a beaucoup de belles façons 🙂
J'ai édité la réponse, std::string::osbl au lieu de std::obnl. les osbl est un membre de std::string pas des mst
Comment est-il différent de
resize
méthode?Il n'y a pas de différence vraiment dans ce scénario.
OriginalL'auteur