donc j'ai une chaîne:
string toReplace = "\\"; path.replace(path.find(toReplace), toReplace.length(), "/");
5 Réponses :
Je reçois une erreur de compilateur sur votre chaîne code> de la chaîne code> avec g ++, car elle contient des codes d'échappement non valides. Apparemment, MSVC produit des avertissements mais pas d'erreur pour cela (voir la réponse de Michael Burr). Donc, si vous utilisez vraiment le chemin code> code>, vous avez publié, modifiez les barres antidactivantes en double backslashes.
Correction de cela, je constate que votre code ne remplace que le premier back-backslash et laisse les autres. Peut-être que vous souhaitez utiliser std :: remplacer () code>, comme: p>
Je ne pense pas que cela fonctionnera. std :: Remplacer code> recherchera le \ caractère, mais il ne trouvera aucun dans la chaîne car le compilateur interprétera chaque \ comme un caractère d'échappement pour la lettre après.
@Maxpm, cette réponse est la meilleure façon de faire une recherche / remplacement d'un seul caractère. Mais il convient de noter que la chaîne réelle fournie par l'OP doit être corrigée correctement pour que cela fonctionne.
Mon installation de GCC (MINGW avec GCC 4.5.1) avec toutes les options que j'ai installées dans mon script pour invoquer g ++ (-wall probablement étant le seul qui compte) ne considère que le non valide \ u code> évasion Séquence ici une erreur. Tous les autres ne font que des avertissements. VC les considère tous les avertissements.
@Michael Burr: Je reçois un "nom de caractère universel incomplet" sur la "séquence d'évacuation inconnue" sur le reste. Toutes les erreurs. Ceci est g ++ 4.3.2 sur Debian avec -wall code> et -wextra code>.
@Fred: Soit GCC a changé la gravité de la "séquence d'évacuation inconnue" entre 4.5.1 et 4.5.2 à partir d'un avertissement à une erreur, ou peut-être que vous avez également -werror code> qui fait toutes les avertissements une erreur?
Depuis STD :: Remplacer (chemin.begin (), chemin.end (), '\\', '/'); Remplacez un seul caractère, l'allumera deux fois?
std :: remplacer code> devrait remplacer toutes les occurrences.
Si vous avez quelque chose comme ceci:
string path = "C:\\Users\\Richard\\Documents\\Visual Studio 2010\\Projects\\Client\\Debug";
est le "chemin de chaîne = ..." dans votre fichier source comme indiqué? Si tel est le cas, il n'y a pas de glaîmes au dos à remplacer.
Le programme suivant: p> sorties: p> Remarque: le programme ci-dessus compile (avec un tas d'avertissements) dans MSVC (via VS2010), mais avec GCC 4.5.1, je reçois une erreur: p> le Comportement de MSVC pour cette erreur (ou GCC pour cette matière) pourrait être configurable avec des options appropriées. P> P>
Autant que je sache, il n'y a aucun moyen de le faire à partir de la chaîne que vous avez spécifiée. Votre code tente d'échapper aux caractères Si la chaîne est codée dur, vous devrez utiliser des doubles slashes (c'est-à-dire Si la chaîne est un chemin qui, par exemple, l'utilisateur entre dans l'utilisateur, vous pourrez peut-être ajouter les caractères d'évacuation par programme. P> u code>, r code>, d code>, v code>, p code>, etc. p>
c: \\ users \\ richard ... code>). P>
Si la chaîne est entrée de l'utilisateur, vous n'aurez plus besoin d'échapper à rien.
essayez d'utiliser string.findfirsof ('\'); p>
Que se passe-t-il quand vous l'essayez?