begin process at 2012 02 10 21:17:11
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Problème de chaine(string) et fichier


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de chaine(string) et fichier

mercredi 12 mai 2004 à 20:51:35 | Problème de chaine(string) et fichier

alncool

Membre Club
Voilà les source je j'ai fait :

-Fichier principal-
#include "stdafx.h"
#using <mscorlib.dll>
using namespace System;

int _tmain()
{
// crée un container contenant plusieur objets de type Reference
vector<Reference> listeRef;
// crée un pointeur sur le container
vector<Reference>::iterator iterListeRef;
// ofstream pour l'écriture dans un fichier
ofstream monfichier;
// ifstream pour la lecture dans un fichier
ifstream monfichier2;
Reference a;
Reference b("2134264","abc123","123456789");
Reference c;
// Ouvre data.txt en écriture
monfichier.open("data.txt");
// écriture des deux objets a et c
// résultat dans le fichier :
// Nouvelle facture Nouveau code Nouveau numéro de série
// 2134264 abc123 123456789
monfichier<<a;
monfichier<<b;
// fermeture du fichier
monfichier.close();
// Réouverture du fichier mais en lecture
monfichier2.open("data.txt");
// boucle pour récupérer les info du fichier
while(monfichier2>>c)
//ajout d'un objet dans le container
listeRef.push_back(c);
monfichier2.close();
//parcourt du container pour afficher les résultats
for (iterListeRef=listeRef.begin();iterListeRef<listeRef.end();iterListeRef++){
cout << (*iterListeRef).get_numFacture()<<" "
<< (*iterListeRef).get_code()<<" "
<< (*iterListeRef).get_numSerie()<<endl;
}
return 0;
}

-Fichier Reference.h-
#include<string>
using namespace std;
class Reference{
private:
string code;
string numFacture;
string numSerie;
public:
Reference();
Reference(string numFacture, string code, string numSerie);
string get_code();
string get_numFacture();
string get_numSerie();
void set_code( string newCode);
void set_numFacture(string newNumFacture);
void set_numSerie(string newNumSerie);
friend ifstream &operator>> (ifstream &fichierEntree, Reference &objetDestination);
friend ofstream &operator<< (ofstream &fichierSortie, Reference &objetSource);
};

-Fichier Reference.cpp-
#include "StdAfx.h"
#using <mscorlib.dll>
// Constructeur
Reference::Reference()
:code("Nouveau code"), numFacture("Nouvelle facture"), numSerie("Nouveau numéro de série")
{
}
// Constructeur surchargé
Reference::Reference(string numFacture,string code,string numSerie)
:code(code), numFacture(numFacture), numSerie(numSerie)
{
}
// Assesseurs
string Reference::get_code(){
return code;
}
string Reference::get_numFacture(){
return numFacture;
}
string Reference::get_numSerie(){
return numSerie;
}
// Mutateurs
void Reference::set_code(string newCode){
code = newCode;
}
void Reference::set_numFacture(string newNumFacture){
numFacture = newNumFacture;
}
void Reference::set_numSerie(string newNumSerie){
numSerie = newNumSerie;
}
// surcharge de l'opérateur >> pour récupérer des infos(attributs des objets de type Reference) d'un fichier
ifstream &operator>> (ifstream &fichierEntree, Reference &objetDestination){
fichierEntree>>objetDestination.numFacture;
fichierEntree>>objetDestination.code;
fichierEntree>>objetDestination.numSerie;
return fichierEntree;
}
// surcharge de l'operateur << pour écrire des infos(attributs des objets de type Reference) dans un fichier
ofstream &operator<< (ofstream &fichierSortie, Reference &objetSource){
fichierSortie<<objetSource.numFacture<<"\t";
fichierSortie<<objetSource.code<<"\t";
fichierSortie<<objetSource.numSerie<<"\n";
return fichierSortie;
}

Explication du problème :
Tout fonctionne bien mis a part un détail : dans le main j'écris les infos des deux objets a et c dans le fichier data.txt - les infos sont bien inscrites avec une petite mise en page c'est a dire une tabulation entre les différents string sauf la dernière de l'objet qui fait un retour chariot pour indiquer les infos du prochain objet - mais lorsque je veux faire la même chose mais inversé, c'est à dire qu'à partir du fichier je désire reconstituer mes objets (dans un container) mes chaînes de caractère sont mal reconstituées. Au lieu d'avoir un objet avec les trois attribut "Nouvelle facture""Nouveau code""Nouveau numéro de série" j'obtient "Nouvelle""facture""Nouveau" puis un autre objet "code""Nouveau""numéro" etc. Autrement dit, au lieu de considérer les tabulations et les retours chariots comme délimitant les longueurs des chaînes, les chaînes de caractère sont délimités par les espaces.
Que dois-je faire pour pouvoir acquérir correctement mes chaînes de caractère ?
Je développe sur visual studio .net (C++) avec application en mode console.
Merci d'avance pour votre aide.

PS : désolé de remettre la même question que dans la section fichier mais je me suis mal fait comprendre alors j'ai bien détaillé et aussi parce que la ca devient urgent





Règle du bon codeur:
1) faire compliquer quand on peut faire simple
2) taper sur son PC quand ça ne marche pas
3) profiter de ses erreurs pour les recopiers dans un autre programme
4) je crois qu'avec tout ça t'arriveras un jour à faire quelque chose.
mercredi 12 mai 2004 à 20:54:01 | Re : Problème de chaine(string) et fichier

alncool

Membre Club
je vous conseil de faire du copier coller de mes sources dans un editeur pour avoir quelque chose de plus lisible par ce que la c pas top...


Règle du bon codeur:
1) faire compliquer quand on peut faire simple
2) taper sur son PC quand ça ne marche pas
3) profiter de ses erreurs pour les recopiers dans un autre programme
4) je crois qu'avec tout ça t'arriveras un jour à faire quelque chose.
mercredi 12 mai 2004 à 21:20:46 | Re : Problème de chaine(string) et fichier

djl


ifstream &operator>> (ifstream &fichierEntree, Reference &objetDestination)
{
getline(fichierEntree,objetDestination.numFacture,'\t');
getline(fichierEntree,objetDestination.code'\t');
getline(fichierEntree,objetDestination.numSerie);
return fichierEntree;
}
mercredi 12 mai 2004 à 21:20:57 | Re : Problème de chaine(string) et fichier

djl


ifstream &operator>> (ifstream &fichierEntree, Reference &objetDestination)
{
getline(fichierEntree,objetDestination.numFacture,'\t');
getline(fichierEntree,objetDestination.code,'\t');
getline(fichierEntree,objetDestination.numSerie);
return fichierEntree;
}
mercredi 12 mai 2004 à 23:39:49 | Re : Problème de chaine(string) et fichier

alncool

Membre Club
oki merci vais essayer...


Règle du bon codeur:
1) faire compliquer quand on peut faire simple
2) taper sur son PC quand ça ne marche pas
3) profiter de ses erreurs pour les recopiers dans un autre programme
4) je crois qu'avec tout ça t'arriveras un jour à faire quelque chose.
mercredi 12 mai 2004 à 23:46:05 | Re : Problème de chaine(string) et fichier

alncool

Membre Club
Pwah niquel ca marche du tonnere de Dieu... Enfin je voulais dire 'Merci ca fonctionne'

Règle du bon codeur:
1) faire compliquer quand on peut faire simple
2) taper sur son PC quand ça ne marche pas
3) profiter de ses erreurs pour les recopiers dans un autre programme
4) je crois qu'avec tout ça t'arriveras un jour à faire quelque chose.


Cette discussion est classée dans : code, string, reference, numserie, numfacture


Répondre à ce message

Sujets en rapport avec ce message

[C] recherche caractere [ par GazGaz ] bonjourj'ai un bout de code qui me permet de chercher un caractere dans une phrase. Ce code me renvoie l'emplacement du premier carcactere.ex : "yop"a entier->string [ par blueburry ] Bonjour, je suis en train de creer une fonction qui permet de verifier si la commande tapee sur telnet est bonne ou pas.Si elle est juste, un code de C++ Standard ? [ par mmuller57 ] Voila, je viens d'aller sur le site de Bjarne Stroustrup et j'y ai pris un exemple de code source en C++ standard :#include#includeusing namespace std conversion de flottant en string [ par biduletrucmachin ] Bonjour j'essaie en vain d'utiliser la fonction sscanf pour convertir une des données flottantes en string. Est ce que quelqu'un connait la syntaxe ex STL: Problème stockage dans un container multimap [ par elnino67 ] Bonsoir,Nous utilisons un programme ayant recours à une multimap utilisant: [code] multimap m;[\CODE]en clé: le champ nom d'une classe Client, et en o Premier Poste, premier code :p [ par Locarre ] Bonsoir à tous, je me suis au C++ depuis très peu de temps, voila un petit code source, et j'aimerais bien que vous me disiez si celui ci par sur de b Tableau de STRING comme paramètre [ par guiguimac ] Bonjour !est-ce que qq'un parmi vous aurait sous la main un code qui montre comment passer comme paramètre à une fonction un tableau de type STRING .. problème probablement lié aux références [ par fanfanfx ] Bonjour, je galère depuis quelques jours sur un bout de code. Pour être bref voici le code qui marche ne marche pas: [code=cpp]void maFonction(const résoudre une exception lors de l'exécution de programme. [ par boualiasma ] Bonjour, Je lance l'exécution avec débogage de mon programme C (en visual studio) alors j'obtiens l'exception suivante: [quote]Exception non gérée à String to Char puis Char to Int puis Int to Char puis Char to Int [ par gooooo ] Bonjour, Je débute avec Visual C++ et j'avoue que j'ai un peu de mal. Habituellement j'utilise Qt et la il y a du changement. Voici le problème : J


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,429 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales