IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Ajout de '\' dans une string


Sujet :

C++

  1. #61
    Membre confirm� Avatar de Dark-Water
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Juin 2006
    Messages
    142
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 142
    Par d�faut
    Citation Envoy� par rigobert
    Dans le m�me ordre d'id�e, si en tout premier dans la fonction Importer() tu fais un file.is_open(), qu'obtiens-tu en retour ?
    en ce qui concerne le file.is_open il renvoi 0 ce qui me p�rait logique compte tenu j'ai rien dans le flux

  2. #62
    Membre confirm� Avatar de Dark-Water
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Juin 2006
    Messages
    142
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 142
    Par d�faut
    Laurent le code fourni precedemment ne suffit pas ?

    Car le code entier est assez cons�quent.

  3. #63
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    D�tails du profil
    Informations personnelles :
    �ge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par d�faut
    Citation Envoy� par Dark-Water
    Laurent le code fourni precedemment ne suffit pas ?

    Car le code entier est assez cons�quent.
    Ce que tu pourrais faire (et ce que te demande Laurent), c'est isoler le probl�me : cr�er un bout de code tr�s simple, tr�s court (pourquoi pas uniquement un main) qui reproduise ton probl�me.

    Par exemple, essaie de cr�er un nouveau projet et de faire �a dans le main :
    - cr�ation d'une string et affectation du chemin du fichier
    - ouverture du fichier
    - test avec file.is_open()

    Si ton probl�me est toujours pr�sent, tu nous donne ce code (qui serait directement compilable), et on pourrait ainsi tester chez nous, et te dire ce qui pose probl�me (du moins, si on le trouve ).

  4. #64
    Membre confirm� Avatar de Dark-Water
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Juin 2006
    Messages
    142
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 142
    Par d�faut
    voila un bout de code qui illustre le bleme

    Attention y'a des MFC
    note le fichier a lire s'appelle 013
    Fichiers attach�s Fichiers attach�s

  5. #65
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    D�tails du profil
    Informations personnelles :
    �ge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par d�faut
    Bon, moi, j'ai pas les MFC... (et pas l'intention de les installer, du moins pas de suite...).

    Mais dis-moi ce que tu obtiens si tu compiles et ex�cutes le code suivant (avec un fichier c:\toto.txt qui existe, bien s�r !) :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    #include <string>
    #include <iostream>
    #include <fstream>
     
    int main()
    {
        std::string path = "C:\\toto.txt";
     
        std::cout << "Fichier : " << path << std::endl;
     
        std::ifstream file(path.c_str());
     
        std::string line;
     
        if (file.is_open())
        {
            std::cout << "Fichier ouvert !" << std::endl;
     
            std::cout << "Contenu : " << std::endl;
     
            while ( ! file.eof() )
            {
                file >> line;
                std::cout << line << std::endl;
            }
        }
        else
        {
            std::cout << "Fichier non ouvert !" << std::endl;
        }
     
    }

  6. #66
    Membre confirm� Avatar de Dark-Water
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Juin 2006
    Messages
    142
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 142
    Par d�faut
    Citation Envoy� par Eusebe
    Bon, moi, j'ai pas les MFC... (et pas l'intention de les installer, du moins pas de suite...).
    Ben moi j'ai pas trop envie de les utiliser je deteste les MFC mais bon la j'ai �t� oblig�.
    Citation Envoy� par Eusebe
    Mais dis-moi ce que tu obtiens si tu compiles et ex�cutes le code suivant (avec un fichier c:\toto.txt qui existe, bien s�r !) :
    Il marche nickel

    EDIT: bon ca y'est ca marche quand je met l'adresse du fichier en dur ds la variable mais pas kan j'utilise la boite de dialogue.
    j'avais laiss� le ifstream f (path.c_str) c'est ca qui foutait la merde.

    Mais bon avec la boite de dialogue ca marche pas les chaines doivent etre diff�rente

  7. #67
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    D�tails du profil
    Informations personnelles :
    �ge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par d�faut
    Citation Envoy� par Dark-Water
    Il marche nickel
    Hein ?
    L� �a fonctionne alors que dans ton projet, si tu utilises une string initialis�e avec "C:\\toto.txt" (donc la m�me chose), file.is_open te renvoie false ?

    C'est bien �a ?

  8. #68
    Membre confirm� Avatar de Dark-Water
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Juin 2006
    Messages
    142
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 142
    Par d�faut
    Citation Envoy� par Eusebe
    Hein ?
    L� �a fonctionne alors que dans ton projet, si tu utilises une string initialis�e avec "C:\\toto.txt" (donc la m�me chose), file.is_open te renvoie false ?

    C'est bien �a ?
    ouep cf l'EDIT

  9. #69
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    D�tails du profil
    Informations personnelles :
    �ge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par d�faut
    Ok, donc on reviens en arri�re...
    Puisque les cha�nes sont diff�rentes, est-ce que tu peux nous donner leur repr�sentation hexad�cimale ?

  10. #70
    Membre confirm� Avatar de Dark-Water
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Juin 2006
    Messages
    142
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 142
    Par d�faut
    Citation Envoy� par Eusebe
    Ok, donc on reviens en arri�re...
    Puisque les cha�nes sont diff�rentes, est-ce que tu peux nous donner leur repr�sentation hexad�cimale ?
    Heu comme on peut pas dire que j'ai � faire ca souvent ma question est simple :

    Je fais comment pour avoir leurs valeur en hexa ????

  11. #71
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    D�tails du profil
    Informations personnelles :
    �ge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
        std::string path = "C:\\toto.txt";
     
        std::cout << "Fichier : " << path << std::endl;
     
        std::cout << "en hexa : ";
        for(int i=0; i < path.size(); ++i)
            std::cout << std::hex << (int)path[i];
        std::cout << std::dec << std::endl;
    Edit : ou encore, en le r�cup�rant dans une autre string :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        std::string path = "C:\\toto.txt";
     
        std::cout << "Fichier : " << path << std::endl;
     
        std::string pathhexa;
        std::ostringstream oss;
        for(int i=0; i < path.size(); ++i)
            oss << std::hex << (int)path[i] << " ";
     
        pathhexa = oss.str();
     
        std::cout << "en hexa : " << pathhexa<< std::endl;

  12. #72
    Membre confirm� Avatar de Dark-Water
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Juin 2006
    Messages
    142
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 142
    Par d�faut
    c'est les meme cad :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    433a5c746f7462e747874

  13. #73
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    D�tails du profil
    Informations personnelles :
    �ge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par d�faut
    Non, l� je te suis plus...

    Tu as dis :
    Citation Envoy� par Dark-Water
    EDIT: bon ca y'est ca marche quand je met l'adresse du fichier en dur ds la variable mais pas kan j'utilise la boite de dialogue.
    j'avais laiss� le ifstream f (path.c_str) c'est ca qui foutait la merde.

    Mais bon avec la boite de dialogue ca marche pas les chaines doivent etre diff�rente
    Et je suis d'accord avec toi, si �a fonctionne quand tu le met 'en dur' et pas en retour de la boite de dialogue, c'est que les cha�nes sont diff�rentes ! Et donc, �a ne peut pas �tre la m�me chose en hexa !

  14. #74
    Membre chevronn�
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Par d�faut
    Bon, apr�s avoir (re) jet� un petit coup d'oeil au code post�, j'ai trouv� ce qui cloche

    Mais l�, trop tard, je dois partir en weekend...

  15. #75
    Membre confirm� Avatar de Dark-Water
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Juin 2006
    Messages
    142
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 142
    Par d�faut
    je sais moi non plus j'y comprend plus rien

  16. #76
    Membre chevronn�
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Par d�faut
    Citation Envoy� par rigobert
    Bon, apr�s avoir (re) jet� un petit coup d'oeil au code post�, j'ai trouv� ce qui cloche

    Mais l�, trop tard, je dois partir en weekend...
    Nan, allez, je blaguais !

    Avant de donner la solution, je voudrais juste dire que faire du copi�/coll� de bouts de code c'est une chose (tous les programmeurs ou presque le font) ; mais faire plusieurs copi�/coll�s de bouts de codes de manifestement diff�rentes origines dans une m�me fonction sans se poser de questions, sans essayer un tant soit peu d'harmoniser le tout, c'est carr�ment n'importe quoi et �a produit ce (beau) r�sultat . A bon entendeur...

    La raison du bug, donc (extr�mement simple) :

    Lorsqu'aucun flag de partage n'est sp�cifi�, CFile::Open() ouvre les fichiers en mode exclusif.
    Or, si tu regardes bien ton code, tu verras qu'ici :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    if(FileOpenDialog.DoModal()==IDOK)
    {
        VERIFY(File.Open(FileOpenDialog.GetPathName(),CFile::modeRead));
    }
    il y a un CFile::Open() qui ouvre ton fichier en mode exclusif ; et il n'est referm� que lorque la fonction s'ach�ve (allocation automatique de CFile au d�but de la fonction).
    Ce qui fait donc que toute tentative de nouvelle ouverture du fichier entre-temps va forc�ment �chouer, quelle que soit la m�thode utilis�e (STL, MFC, CRT...) puisque le verrou est pos� au niveau du syst�me.

    La solution : limiter la port�e de l'objet CFile au bloc conditionnel dans lequel la v�rification est faite :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    //	CFile File;                    <<< supprimer �a
    	char* fichier;
    	
    	CString OpenFilter;
    	OpenFilter = "Text File (*.*)|*.*||";
    
    	CFileDialog FileOpenDialog(TRUE, NULL, NULL,
          OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|OFN_PATHMUSTEXIST,
          OpenFilter,                       // filter
          AfxGetMainWnd());               // the parent window 
    	if (FileOpenDialog.DoModal()==IDOK)
    	{
    		CFile File;                    <<< rajouter �a
    		VERIFY(File.Open(FileOpenDialog.GetPathName(),CFile::modeRead));
    	}
    	...

  17. #77
    Membre confirm� Avatar de Dark-Water
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Juin 2006
    Messages
    142
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 142
    Par d�faut

    je l'avais deja soulev� ce probleme dans une autre partie de mon code et je l'ai oubli� la !!!!!
    Un grand � tous pour votre aide et oui je suis un gros

    Respect rigobert tu m'as �vit� de me mettre une balle dans la tete avant le weekend

    Et encore merci � tous

  18. #78
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    Manque plus qu'un clic sur

+ R�pondre � la discussion
Cette discussion est r�solue.
Page 4 sur 4 Premi�rePremi�re 1234

Discussions similaires

  1. Ajout al�atoire d'une String dans une balise XML � partir d'un tableau de String
    Par chebmo1986 dans le forum Format d'�change (XML, JSON...)
    R�ponses: 5
    Dernier message: 19/03/2009, 11h21
  2. mettre un entier dans une string
    Par kinder29 dans le forum SL & STL
    R�ponses: 14
    Dernier message: 14/02/2005, 11h54
  3. [DOM] sauver dans une String
    Par hocinema dans le forum Format d'�change (XML, JSON...)
    R�ponses: 3
    Dernier message: 28/09/2004, 21h44
  4. [D�butant][JSP] Ajout des caract�res � une String...
    Par Henkyl dans le forum Servlets/JSP
    R�ponses: 5
    Dernier message: 04/03/2004, 16h30
  5. [Syntaxe] mettre des ' dans une string ?
    Par souch dans le forum D�buter
    R�ponses: 4
    Dernier message: 14/08/2003, 16h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo