C++ urgence svp
Résolusalut, 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
Le sujet porte sur la transformation de chaînes issues d’un fichier texte en C++, où des lignes comme CDFX = RFRPAD7 ou CDFX = RFRPAD8/A8 doivent être fusionnées selon une règle précise. Plusieurs approches proposent de lire ligne par ligne, de repérer le slash, puis de scinder la chaîne et de recomposer le résultat selon les segments avant et après le slash. D'autres approches utilisent find_first_of pour localiser le séparateur, substrings et vérifications d’égalité pour éviter les duplications, avec des exemples d’extraction et de réassemblage couvrant les cas avec et sans slash. En cas de doute, plusieurs propos confirment qu’une boucle de lecture et un buffer permettent une gestion robuste des entrées, même lorsque des lignes présentent des formats variés.
-
ça donne rien ??
-
aucun idée !!
-
Non, quand ça trouve pas, ça doit renvoyer -1 il me semble… if (pos == -1)
-
j'ai deja esséyé avec if (pos == ligne.length()) mais ça donne tjr le meme truc
-
en tous cas merçi pour votre aide.
-
teste le retour de la fonction find("-")
-
pour ces deux chaine de caractér
AESRA2-D2 // ça done le resultat que je veux : AESRA2 AESRD2
ADZEA3 // ça se double : ADZEA3 ADZEA3 est ce n'est pa ce que je veux
j'attend le resultat suivant
AESRA2 AESRD2
ADZEA3 // je veux pa que ça se double -
eh bien, là, je n’ai plus d’idée… j’ai fait tout ce que j’ai pu pour toi.
-
oui, c'est ce que j'ai mis et ça ne donne rien !!
-
if (sousligne1.compare(sousligne3)) {
cout<< sousligne1 << " " << sousligne3 << endl;
}
else {
cout << sousligne1 << endl;
} -
vous pouvez me mettre votre solution dans le code, parske je le test et ça donne tjr rien ???
-
ah, ce sont des objets string… pardon dans ce cas :
if (sousligne1.compare(sousligne3)) {
//… si pas égales
}
else {
//… si égales
} -
j'ai mis if (strcmp(sousligne1, sousligne3)) {…} est ça m'adonné l'erreur suivante :
F:\stage\slach.cpp(26) : error C2664: 'strcmp' : cannot convert parameter 1 from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'const char *' -
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)) {…} -
Bonjour.
j'ai rajouter ce test :
if (sousligne1 == sousligne3) {
cout << sousligne1 << endl;
}
else {
cout<< sousligne1 << " " << sousligne3 << endl;
}
mais tjr j'ai le meme resultat -
je trouve tjr pa la solution, ya quelqu'un qui peux m'aidé !!!
-
indice : si ça ne trouve pas le tiret, find_first_of("-") devrait renvoyer -1. Teste cette valeur.
-
salut, bein tu sais mnt je bloque totalment !!!
si ta une solution alor à l'aide !! -
Salut yanlou, inspire toi de mon code avec awk, parce que là, tu brûles en C.
-
svp si ya quelqu'un qui pourrai m'aidé pour fair la boucle parsque je bloque...
- 1
- 2