2011-02-28 6 views
0

J'ai un fichier texte qui contient cette ligne:Comment modifier un texte dans un fichier texte

C:\Program Files\app\ 

Je veux le lire pour devenir ceci:

C:\\Program Files\\app\\ 

Je sais comment lire le fichier en C++ visuel, mais comment ajouter une barre oblique() à chaque fois qu'il trouve la barre oblique.

char str[200]; 
    fstream file_op("C:\\path.txt",ios::in); 
    file_op >> str; 
    file_op.close(); 

Répondre

1

La façon la plus simple de le faire est à travers la boucle:

char newPath[MAX_PATH]; 
int newCount = 0; 
for(int i=0; i < strlen(str); i++) 
{ 

    if(str[i] == '\') 
    { 
     newPath[newCount++] = str[i]; 
    } 
    newPath[newCount++] = str[i]; 
} 

Veuillez noter que vous ne pouvez pas changer un fichier en place. Vous devrez écrire de nouvelles chaînes dans un nouveau fichier. Je n'utilise pas boost ou toute autre bibliothèque car ceux-ci ne font pas partie de VisualC++ par défaut et votre tag dit que vous en avez besoin pour VisualC++

-1

En VB, vous pouvez utiliser String.Split() pour remplacer certains caractères avec d'autres, vous voudrez peut-être essayer ceci ou Google pour l'utilisation de « regex » (ne sais pas l'utilisation de propper soit en ce moment, mais je sais que ce a été conçu pour remplacer et chaînes de modifier) ​​

+0

Nous parlons de C++ ... – CharlesB

+0

ouais et dans VS vous avez tout le gentil. NET-fonctionnalités que vous avez dans toutes les langues ... comme les fonctions de chaîne, regex, et ainsi de suite ... et même si ce n'est pas directement implémenté, vous pouvez le trouver "regex C++" et le premier lien est "http: http://www.drdobbs.com/cpp/184404797 "... désolé si cela ressemble à la pêche à la traîne, mais suis-je entouré par des idiots complets ici? eu une discussion simmilar avec quelques secousses à une autre question ... – Husky110

2

en utilisant Boost:

#include <boost/algorithm/string/replace.hpp> 
#include <fstream> 
using namespace std; 
int main(int argc, char const* argv[]) { 
    string line; 
    ifstream file_op("D:\\path.txt"); 
    ofstream file_out("D:\\out.txt"); 
    while(getline(file_op, line)) { 
    boost::replace_all(line, "\\", "\\\\"); 
    file_out << line << '\n'; 
    } 
    // file_op and file_out are closed on exit 
    return 0; 
}