Probleme avec la fonction find(en c++)
Fermé
alexis45
Messages postés
11
Date d'inscription
dimanche 9 décembre 2007
Statut
Membre
Dernière intervention
9 juillet 2009
-
23 févr. 2009 à 12:46
loupius - 23 févr. 2009 à 14:32
loupius - 23 févr. 2009 à 14:32
A voir également:
- Probleme avec la fonction find(en c++)
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Excel remplir automatiquement une cellule en fonction d'une autre ✓ - Forum Excel
- Fonction filtre excel n'existe pas - Forum Excel
- Cette fonction n'est pas disponible actuellement tv lg - Forum Téléviseurs
1 réponse
Oh la la , je crois que tu mélanges...
D'abord tu dois écrire str->find(...) car 'str' est un pointeur, mais ça ne suffit pas.
'str' est un pointeur de la classe 'string'; donc tu ne peux l'utiliser comme une chaîne de caractère; donc tu ne peux écrire: str=(string*) malloc (sizeof(string)*size); mais str = new string;.
D'autre part 'fread' demande un pointeur de type 'void*' mais il ira déposer à cette adresse le résultat de sa lecture, donc on ne peut passer 'str'.
Même problème avec le printf("%ld\n\n",str); car 'str' n'est pas un nombre!
En conclusion est-il nécessaire d'utiliser une variable de classe string?
Je ne sais pas si j'ai la bonne solution, mais je propose de passer par une solution intermédiaire.
D'abord tu dois écrire str->find(...) car 'str' est un pointeur, mais ça ne suffit pas.
'str' est un pointeur de la classe 'string'; donc tu ne peux l'utiliser comme une chaîne de caractère; donc tu ne peux écrire: str=(string*) malloc (sizeof(string)*size); mais str = new string;.
D'autre part 'fread' demande un pointeur de type 'void*' mais il ira déposer à cette adresse le résultat de sa lecture, donc on ne peut passer 'str'.
Même problème avec le printf("%ld\n\n",str); car 'str' n'est pas un nombre!
En conclusion est-il nécessaire d'utiliser une variable de classe string?
Je ne sais pas si j'ai la bonne solution, mais je propose de passer par une solution intermédiaire.
#include <cstdlib> #include <iostream> #include <string> #include <string.h> using namespace std; int main(int argc, char *argv[]) { FILE* file = fopen("C:\\arme.ase", "r+"); char* chn; fseek (file , 0 , SEEK_END); long size= ftell(file); chn = (char*) malloc(sizeof(char)*(size+1)); rewind(file); fread(chn,sizeof(char),size,file); char* pfound = strstr(chn, "*MESH_VERTEX_LIST {"); if (pfound) printf("%ld\n", (long)*pfound); // si tu veux absolument utiliser une classe string, tu peux écrire string* str = new string(chn); printf("%s\n", str->data()); return EXIT_SUCCESS; }