C++ urgence svp
Résolu
yanlou
Messages postés
119
Date d'inscription
Statut
Membre
Dernière intervention
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
salut, désolé j'ai fais une erreur tot aleur.
j'ai u fichier txt qui contient des chaine de caracté, exemple :
CDFX = RFRPAD7
CDFX = RFRPAD8/A8
CDFX = CDXRTD3/A3
CDFX = FGDTRE2
CDFX = ATZRSD5/A5
je veux savoir si il existe une fonction en c++ qui me permet d'avoir le resultat suivant:
CDFX = RFRPAD7
CDFX = RFRPAD8
CDFX = RFRPAA8
CDFX = CDXRTD3
CDFX = CDXRTA3
CDFX = FGDTRE2
CDFX = ATZRSD5
CDFX = ATZRSA5
merçi d'avance pour votre aide
salut, désolé j'ai fais une erreur tot aleur.
j'ai u fichier txt qui contient des chaine de caracté, exemple :
CDFX = RFRPAD7
CDFX = RFRPAD8/A8
CDFX = CDXRTD3/A3
CDFX = FGDTRE2
CDFX = ATZRSD5/A5
je veux savoir si il existe une fonction en c++ qui me permet d'avoir le resultat suivant:
CDFX = RFRPAD7
CDFX = RFRPAD8
CDFX = RFRPAA8
CDFX = CDXRTD3
CDFX = CDXRTA3
CDFX = FGDTRE2
CDFX = ATZRSD5
CDFX = ATZRSA5
merçi d'avance pour votre aide
31 réponses
je ne crois pas mais bon je suis novice en C++ je serai toi je lirai mon fichier texte je le mettrai dans un buffer a chaque retour chariot je lis et j'enregistre.Je compare les caractère avec un / et si jamais c'est pareil alors le rajoute une ligne je copie ce que j'ai lu moins 2 caractère puis j'ajoute ce qu'il y a après le / plus facile a dire qu'a faire je te l'accorde.
Bonjour, même avec un bon éditeur de texte, tu peux faire une macro pour ça, ou alors avec sed ou awk ; je te laisse le soin de regarder la documentation de awk qui est un utilitaire assez puissant pour cela !
bien sûr que c'est faisable je t'enverrai peut-être en mp la réponse si j'ai le temps..
avec vim, si tu tapes exactement (<Esc> représente la touche Échap, et les retours à la ligne représentent Entrée)
/\/
qay0ni
<Esc>PxxXnq@a@a@a@a
etc. pour répéter la macro, tu peux aussi faire 100@a pour la répéter 100 fois p.ex.
/\/
qay0ni
<Esc>PxxXnq@a@a@a@a
etc. pour répéter la macro, tu peux aussi faire 100@a pour la répéter 100 fois p.ex.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
merçi les gas mais j'ai tjr ce problém, et j'ai pa trouvé de solution
j'ai esséyé avec le code suivant mais ça me donne rien
#include <string>
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
// le constructeur de ifstream permet d'ouvrir un fichier en lecture
ifstream fichier("test.txt");
if (fichier) // ce test échoue si le fichier n'est pas ouvert
{
string ligne; // variable contenant chaque ligne lue
// cette boucle s'arrête dès qu'une erreur de lecture survient
while (getline(fichier,ligne))
{
// afficher la ligne à l'écran
cout << ligne << endl;
// Récupération de la position du slash
size_t pos=ligne.find_first_of("/");
// la sous-chaine de gauche donne le 1er entier
int a=atoi(ligne.substr(0,pos).data());
// la sous-chaine de droite, le second
int b=atoi(ligne.substr(pos+1).data());
// supression du surplus
string sousligne=ligne.substr(0,pos);
// Affichage du résultat
cout << a << " " << b << endl;
}
}
fichier.close();
}
j'ai esséyé avec le code suivant mais ça me donne rien
#include <string>
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
// le constructeur de ifstream permet d'ouvrir un fichier en lecture
ifstream fichier("test.txt");
if (fichier) // ce test échoue si le fichier n'est pas ouvert
{
string ligne; // variable contenant chaque ligne lue
// cette boucle s'arrête dès qu'une erreur de lecture survient
while (getline(fichier,ligne))
{
// afficher la ligne à l'écran
cout << ligne << endl;
// Récupération de la position du slash
size_t pos=ligne.find_first_of("/");
// la sous-chaine de gauche donne le 1er entier
int a=atoi(ligne.substr(0,pos).data());
// la sous-chaine de droite, le second
int b=atoi(ligne.substr(pos+1).data());
// supression du surplus
string sousligne=ligne.substr(0,pos);
// Affichage du résultat
cout << a << " " << b << endl;
}
}
fichier.close();
}
Bon, je te donne une deuxième méthode avec awk :
1. Télécharge awk pour windows ici : http://gnuwin32.sourceforge.net/packages/gawk.htm
2. Crée un fichier dans le même dossier que ton fichier original, et qui contient ceci (fais un copier-coller)
3. Ouvre la ligne de commande et va dans le répertoire (dossier) de tes deux fichiers : je suppose que tu sais utiliser la commande cd
4. Tape
où Fichier_script est le fichier contenant le code du point 2, fichier_texte est ton fichier de départ, et fichier_sortie est le fichier final.
Bon, là j’espère que tu t’en sortiras. Si tu as des notions de ligne de commande ça devrait te poser aucun problème, et j’ai testé, ça marche.
1. Télécharge awk pour windows ici : http://gnuwin32.sourceforge.net/packages/gawk.htm
2. Crée un fichier dans le même dossier que ton fichier original, et qui contient ceci (fais un copier-coller)
BEGIN { nc=2 FS="/" ; } NF==1 { print } NF>1 { print $1 i = 2 ; while (i <= NF) { print substr($1, 1, length($1) - nc) $i; i++ ; } }
3. Ouvre la ligne de commande et va dans le répertoire (dossier) de tes deux fichiers : je suppose que tu sais utiliser la commande cd
4. Tape
awk -f FICHIER_SCRIPT FICHIER_TEXTE > FICHIER_SORTIE
où Fichier_script est le fichier contenant le code du point 2, fichier_texte est ton fichier de départ, et fichier_sortie est le fichier final.
Bon, là j’espère que tu t’en sortiras. Si tu as des notions de ligne de commande ça devrait te poser aucun problème, et j’ai testé, ça marche.
salut, je vous remercie mais moi je doit travailél avec c++ alor si quelqu'un peux m'aidé, parsque le code que j'esséye d'ecrir doit fonctioné mais je comprend pas ou ça cloche ?!!
Salut.
tu ne vérifie pas que find a trouver quelque chose (dans ton cas utilise find plutot que find_first_of).
C'est quoi cet accès à .data() ??
Je ne comprends pas l'intéret de atoi().
tu ne vérifie pas que find a trouver quelque chose (dans ton cas utilise find plutot que find_first_of).
C'est quoi cet accès à .data() ??
Je ne comprends pas l'intéret de atoi().
Bonjour,
j'ai un fichier txt, avec ce code j'obtien pour une chaine comme ça
AFRZSA2-D2
ADDSEA3
le resultat
AFRZSA2 AFRZSD2
ADDSEA3 ADDSEA3 // je veux pas que cette chaine ce double je veux avoir ADDSEA3 ça doit se fair avec une boucle mais j'arrive pas de le faire !!
mon code :
#include <string>
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
ifstream fichier("slash.txt");
if (fichier)
{
string ligne;
while (getline(fichier,ligne))
{
size_t pos=ligne.find_first_of("-");
string sousligne1=ligne.substr(0,pos);
string sousligne2=ligne.substr(pos+1);
string sousligne3=sousligne1.substr(0,sousligne1.size()-2).append(sousligne2);
cout<< sousligne1 << " " << sousligne3 << endl;
}
}
fichier.close();
}
j'ai un fichier txt, avec ce code j'obtien pour une chaine comme ça
AFRZSA2-D2
ADDSEA3
le resultat
AFRZSA2 AFRZSD2
ADDSEA3 ADDSEA3 // je veux pas que cette chaine ce double je veux avoir ADDSEA3 ça doit se fair avec une boucle mais j'arrive pas de le faire !!
mon code :
#include <string>
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
ifstream fichier("slash.txt");
if (fichier)
{
string ligne;
while (getline(fichier,ligne))
{
size_t pos=ligne.find_first_of("-");
string sousligne1=ligne.substr(0,pos);
string sousligne2=ligne.substr(pos+1);
string sousligne3=sousligne1.substr(0,sousligne1.size()-2).append(sousligne2);
cout<< sousligne1 << " " << sousligne3 << endl;
}
}
fichier.close();
}
svp si ya quelqu'un qui pourrai m'aidé pour fair la boucle parsque je bloque...
Bonjour.
j'ai rajouter ce test :
if (sousligne1 == sousligne3) {
cout << sousligne1 << endl;
}
else {
cout<< sousligne1 << " " << sousligne3 << endl;
}
mais tjr j'ai le meme resultat
j'ai rajouter ce test :
if (sousligne1 == sousligne3) {
cout << sousligne1 << endl;
}
else {
cout<< sousligne1 << " " << sousligne3 << endl;
}
mais tjr j'ai le meme resultat
Bonsoir Yanlou, ça serait une idée, mais sousligne1 et sousligne3 sont des pointeurs. Pour comparer les chaînes de caractères utilise
if (strcmp(sousligne1, sousligne3)) {…}
if (strcmp(sousligne1, sousligne3)) {…}
http://www.iut-orsay.fr/dptinfo/Pedagogie/Roger.Astier/divers/clString.html