Accueil > Forum > > > > strings et tokens?
strings et tokens?
samedi 24 mars 2007 à 00:49:51 |
strings et tokens?

Titof301
|
Salut a tous, j'ai une question a propos des strings et des tokens... j'ai un fichier txt que j'ouvre et il est repartit ainsi : chiffre phrase(1,2,3... mots) * chiffre chiffre phrase(1,2,3... mots) * chiffre ETC... ce que je veut faire c'est rentrer chacune de ces données dans des tableau différents, un pour pour les premiers chiffre, un pour les phrases complètes et un pour les derniers chiffres. Le probleme est comment faire pour incoporer les phrases complete dans chacune des case de mon tableau de caractère (ce qui veut dire sauter les espace et arreter au caractère *)
je sais que c'est avec la fonction strtok mais je sais pas vraiment comment m'y prendre, avoir eu la phrase dans une variable char sa aurait été simple, mais de devoir le faire en lisant le fichier... no comprendo
je rapelle que je ne peut utiliser que la fonction strtok, si jamais il y en avait d'autres...
merci d'avance pour votre aide 
|
|
samedi 24 mars 2007 à 00:53:09 |
Re : strings et tokens?

Titof301
|
hem... c'est pas vraiment dans cette section que j'ai envoyer mon message...  dsl on pourrait deplacer en section c++ svp? 
|
|
samedi 24 mars 2007 à 01:04:56 |
Re : strings et tokens?

Ombitious_Developper
|
Salut:
Tu peux utiliser "strtok" pour découper un phrase en tokens.
Cette fonction est déconseillée pour un programme multi-threads.
Mais si ton programme est un programme ordinaire cette fonction est adéquate sinon crées ta propre version. ________________________________________________________________________________ A.B. : "Dieu nous donne des mains, mais il ne bâtit pas les ponts
|
|
samedi 24 mars 2007 à 08:03:23 |
Re : strings et tokens?

Matt67
|
Bonjour,
Est ce que ton fichier est volumineux ? Quelle est la longueur de tes lignes environ, et est ce que ces valeurs varient beaucoup ? tu dois coder en C ou en C++ ?
Matt...
|
|
samedi 24 mars 2007 à 12:26:53 |
Re : strings et tokens?

Titof301
|
Bonjour a vous 2, bon pour ombitious, je sais que je dois utilis mais je ne sais aps comment l'utiliser à partir d'une lecture de fichier et non d'une variable, là est le probleme... 
Sinon matt mon fichier est tres petit, il fait a peine 3ko et c'est pour un travail alors je ne prendrai que ce fichier
Pour l'instant, le seule alternative que je vois c'est :
- Lire mon premier chiffre et le mettre dans son tableau - Creer un variable char temporaire que je mettrai dans un while (temp != '*') ==> lire le fichier et ajouter a chaque fois à l'aide de strcat pour ainsi avoir chacun des titres complets (il s'agit ici de titre de films donc le nombre de mots varies) dans chacun des case correspondantes,
Le probleme, je n'utilisa pas la fonction strtok comme ca... alors que je dois l'utiliser, et de plus je crée une variable pour rien..., alors quelqu'un pourrait me donner un exemple de code pour utiliser strtok a partir d'une lecture de fichier?
Ma fonction qui charge les tableau ressemble a sa (dsl j'ai fait sa vite a matin, ya ptete des chose impossible dans mon code j'y reviendrai ce soir ^^) :
int nb=0; char *jetonPtr, titre1[20], titre2[20], temp[20]; ifstream film; film.open("Films.txt",ios::in); if (!film) { cerr << "Erreur ouverture fichier\n"; exit(1); } while (!film.eof()) { film >> numero_film[nb] >> temp; while (temp != '*') { strcat ( titre_film[nb], temp ); film >> temp; } film >> annee_film[nb]; nb++; } film.close; return nb;
|
|
samedi 24 mars 2007 à 12:52:00 |
Re : strings et tokens?

yann_lo_san
|
C'est typiquement le cas ou il faudrait utiliser la serialisation. C'est à dire un flux binaire d'une structure vers le fichier et du fichier vers une structure. Ce qui évite de 'parser' du texte à tout va !
Sinon la solution est de récuperer ligne par ligne, de créer un ptr vers le début de la ligne, et de le faire avancer selon tes critères d'extraction.
char szLigne[256] = film.getLine(); char temp[128]; char* pStr = szLigne; int i = 0;
while( *pStr != ' ' ) { temp[i++] = *pStr; pStr++; } temp[i] = '\0'; int premierNombre = atoi(temp); i = 0; while( *pStr != '*' ) { temp[i++] = *pStr; pStr++; } temp[i] = '\0';
// Phrase est dans temp
// saute '*' pStr++;
i = 0; while( *pStr != '\0' ) { temp[i++] = *pStr; } temp[i] = '\0'
int nombre2 = atoi(temp); // Repart sur la ligne suivante
Tout ça en 2 lignes avec la serialisation : // boucle read(&struct, sizeof(STRUCT), file);
|
|
dimanche 25 mars 2007 à 01:24:26 |
Re : strings et tokens?

Titof301
|
hum... tout d'abord merci de ta réponse, par contre je dois te dire que je suis pas un pro en programmation, alors du coup je saisie pas exactement le fonctionnement du code tu m'as donné. Pour ce qui est de la "serialisation" bah je connais pas alors je vais attendre de le voir en cours. Bon je vais donner un exemple de mon fichier texte, chose que j'aurais ptete du faire avant... : 19 Le Pianiste * 2002 Thomas Kretschmann, Maureen Lipuran; 12 Pay It Forward * 2000 Haley Joel Osment, Kevin Spacey, Helen Hunt; Votre programme doit lire ce fichier et charger dans trois tableaux parallèles, le numéro de film, le titre du film et l'année du film. Il doit aussi en même temps charger dans deux tableaux parallèles le nom de l'acteur ou actrice et le(s) numéro(s) de(s) film(s) dans le(s)quel(s) il ou elle joue. Ce dernier tableau avec les numéros de films pour chaque acteur ou actrice est un tableau d'entiers à deux dimensions.
Bon pour l'instant le tableau des acteurs ont peut laisser faire, je verrai rendu la, mais pour l'instant c'est d'arriver a lire des titres de films avec des espaces et les mettre dans un tableau qui me pose problème. Au fait, j'ai un blanc de mémoire pcq j'ai vu sa en cours, mais 3 tableau en parallele sa veut juste dire que les cases correspondantes a chacun des tableau ont un liens entre elle? (exemple, la case 1 du tableau des 1er chiffres va avec la case 1 du tableau des titres puisque le film 19 c'est le pianiste?) Et un tableau en 2 dimension bah c'est seulement un tableau a doucle indice, du genre un tableau de chaine de caractere (comme dans mon cas celui des titres de films)?
Sinon, c'est pas possible de faire ca avec un strtok? ou alors c'est que c'est plus compliquer avec un fichier ou juste plus long?
Pour ton code, bon tout d'abord les pointeurs je sais plus ou moins ce que c'est et a quoi sa sert, on devrait le voir d'ici pas longtemps, mais bon je vais te dire ce que j'en comprends pour voir si je comprends bien au moins les bases. Ce que je crois saisir :- char szLigne[256] = film.getLine(); ===> c'est pour incorporer une ligne entierede mon fichier texte dans le char szLigne - petite parenthèse : Je connais plus ou moins (surtout moins) les pointeurs, mais en gros, un pointeur sa "pointe" vers, dans ce cas ci, le premier charactere de chaque "mot" (par mot j'entend ensemble de caractères séparés chacun par un espace), donc le premier while lit le premier "mot" qui est un chiffre donc nécessairement des qu'il frappe un espace, le chiffre est lu. Et quand tu fait ptr++, si je comprends bien sa veut dire passe au prochain caractères? - int premierNombre = atoi(temp); ===> hum... je suis pas sur de comprendre cette ligne... c'est surtout le "atoi(temp)" que je vois pas... - En gros selon ton exemple, je me sert d'un char temp[] pour stocker toute mes valeurs, donc je stock au depart le premier chiffre, quand c'est fait je copie la valeur du temp dans la premiere case de mon tableau des premiers chiffres, ensuite j'efface le contenu de temp et je recommence mais cette fois avec le titre du film, un coup rentré au complet je copie son contenue dans la premiere case de mon tableau des titres, j'efface le contenu de temp, ETC... ? - Et un coup la premiere ligne faite, je fait comment pour passer a la seconde? Pcq dans mon code dans le main, j'appele la fonction charger_tableaux, et je veut que tout ce passe dans cette fonction, et que lorsqu'elle en sort mes tableaux soient tous complets (au pire si faut re-entrer dans la fonction pour passer a la ligne suivant, je mettrai un for dans le main) donc dsl pour toute c'est question, en espérant que tu puisse y répondre (ou quelqu'un d'autre aussi si sa lui dit )
|
|
dimanche 25 mars 2007 à 13:18:26 |
Re : strings et tokens?

Titof301
|
ah... j'oubliais... j'ai quand meme essayer ton programme que tu m'as donné, en l'analysant je comprends en gros je crois, mais il me donne une erreur :
F:\SCHOOL\SESSION 2\Programmation\TP2\TP2\TP2\tp2.cpp(62) : error C2039: 'getLine' : is not a member of 'basic_ifstream<char,struct std::char_traits<char> >' Error executing cl.exe.
et cette erreur se situe ici ===> char szLigne[256] = film.getLine();
est-ce pcq j'ai pas les bon #include en haut? y'en faut tu un spécial pour tout ca? pour l'instant j'ai "iostream, iomanip, fstream, cstring (je connais pas vraiment cette dernière mais dans les exemple de mon livre elle y est alors...)
en manque-t-il une?
merci d'avance!
|
|
dimanche 25 mars 2007 à 15:30:51 |
Re : strings et tokens?

yann_lo_san
|
En c++ pur il te faut : #include <fstream> #include <iostream> #include <string> using namespace std; string recup(""); // ou char recup[256]; ifstream entree("Films.txt"); if( !entree ) { cerr << "erreur fichier"; return 0; } while( getline(entree, recup) ) { // Boucle sur chaque ligne }
le string recup peut etre convertit en chaine C avec : recup.c_str()
(quant je dis c++ pur, c'est à dire avec le type std::string)
|
|
dimanche 1 avril 2007 à 19:03:26 |
Re : strings et tokens?

Titof301
|
dsl j'ai pas pus venir plus tot, merci de votre aide j'ai réussi de peine et de misere mais sa fonctionne  merci a tous!!
|
|
Cette discussion est classée dans : fichier, chiffre, phrase, strings, tokens
Répondre à ce message
Sujets en rapport avec ce message
tout petit probleme tres simple ! [ par Kevb37 ]
Hello,Bon, alors je commence le C depuis peu et je voudrais savoir comment enregistrer un chiffre dans un fichier sur le disque (par exemple avec fget
Supprimer dans un fichier [ par xactise ]
Bonjour tous le monde voila je débute en Cet j'aimerai savoir comment suprimer une frase dans un fichier texte j'explque mon exemple en quelque lignev
Map en fichier TXT [ par norton ]
Hello, j'ai commencé un jeu en 2d (opengl) et j'aimerai pouvoir charger des textures en fonction des chiffres ou caractères contenu dans un fichier t
Pb de majuscule à modifier sur un fichier [ par lacharlottinne ]
Je voudrai convertir le text de mon fichier tout en minuscule .. quelqu'un peut m'aider ? voici le code #include #include #include #include #includ
Ouvrir un fichier dans son intégralité en C++ [ par ndubien ]
Bonjour,J'ai déjà posé cette question, mais elle n'a été qu'à moitié satisfaite.Je m'explique je suis en train de créer un programme qui necessite d'o
Comment récupérer la deuxième colonne d'un fichier .txt en C++.NET [ par zebulon88 ]
Bonjour à tous,Je n'arrive pas à récupérer la deuxième colonne (séparé par une tab de la première colonne) d'un fichier .txt en C++.NET et à la mettre
Ecrire copier un fichier et le traduire en chiffre [ par yggy ]
Voila mon problème j'aimerais avoire une variable qui contien un fichier dans un format numérique comment faire ???______Yggy http://yggy.ifrance.com
mettre un fichier dans les resosurce et l'extraire [ par yggy ]
Bonjour Je voudrais mettre un EXE dans les ressource de mon programme et a son execution qu'il soit extrait.comment faire?______Yggy http://yggy.ifran
Installation de l'API mysql++ pour VC++ 2005 [ par Jary ]
Bonjour,Je souhaite installer l'API mysql++ pour Visual C++ 2005 Express. J'ai télécharger le fichier de: http://tangentsoft.net/mysql++/Cependant, il
Besoin d'un sérieux coup de main!!! [ par moimeme4 ]
Bien le bonjour tout le monde. J'ai pris un cours d'initation à la programmation et, je n'y comprend pas grand chose. C'est en fait plus ou moins ma b
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|