-
Parseur de fichier ASCII
Bonjour,
je suis en stage dans une entreprise qui gère beaucoup de formats de fichiers textes. Je dois développer un outil permettant de les exploiter au mieux. Ces fichiers contiennent des points (X,Y,Z) mais ils sont rangés de manière très différente d'un fichier à l'autre. En effet, ils peuvent par exemple être placés en trois colonnes, une pour chaque coordonnées X,Y,Z, mais aussi en ligne.
J'ai donc besoin de connaitre un Contrôle MFC qui me permettrait d'éditer ces fichiers en ligne et en colonne. Le problème est d'arriver à délimiter la colonne de chaque coordonnées, ou sa ligne, si les points sont rangés en ligne.
J'accepte bien sur tous les conseils à propos du codage d'un parseur en C++.
Merci à vous.
-
salut,
l'idéal serait que les colonnes soient séparées avec un caractère explicite comme le \t (tabulation) ou tout simplement ';'
après il suffit de lire ligne par ligne avec la classe CStdioFile par exemple
pour parser les colonnes on peut utiliser la classe CString et sa méthode Tokenize avec visual 2008 .
ou voir faq: http://cpp.developpez.com/faq/vc/?pa...ons#MakeStrtok
et http://cpp.developpez.com/faq/vc/?pa...WithCStdioFile
-
Merci pour tes conseils, le parseur est fait maintenant. Par contre je dois le lier à une interface graphique, et j'ai besoin d'un contrôle MFC qui me permettrait d'afficher le fichier à parser dans l'interface. Je me sers pour l'instant d'un RichEditCtrl, qui convient parfaitement à une exception près, je ne peux pas afficher les numéros de ligne ....
Si vous connaissez un contrôle qui me permette de faire cela, tout en ayant les fonctionnalités du richEdit (comme le changement de couleur du texte, la possibilité de sélectionner du texte etc ..) je suis preneur.
Merci de votre aide :)
-
salut, je ne suis pas sur que ça existe sans magouilles...
peut être faire une deuxième passage après chargement ou au chargement ligne à ligne pour insérer le numéro de ligne en début de ligne .
c'est une idée comme ça .
-
Oui j'avais bien pensé à ça, mais comme tu dis ce n'est pas très "propre". Surtout que je voudrais que les numéros de ligne ne fasses pas partie du texte et ne soient pas sélectionnables ... mais bon si j'ai pas le choix ...
merci de ta réponse.