Probleme avec la fonction find(en c++)
alexis45
Messages postés
11
Date d'inscription
Statut
Membre
Dernière intervention
-
loupius -
loupius -
Bonjour,
J'ai essayer de lire un fichier et de mettre le contenu dans une variable string mais je ne trouve pas d'autre solotion que de prendre la fonction fread et de mettre en premier parametre un pointeur string.Et après je veux rechercher une chaine de texte dans ce string(str) avec la fonction str.find("") mais comme c'est un pointeur ,mon compilateur(dev-cpp) dit qu'il y a une erreur.Voici mon code
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char *argv[])
{
FILE *file=fopen("C:\\arme.ase","r+");
string * str;
size_t found;
fseek (file , 0 , SEEK_END);
long size= ftell (file);
str=(string*) malloc (sizeof(string)*size);
rewind (file);
fread(str,1,size,file);
found=str.find("*MESH_VERTEX_LIST {");/* Le probleme vient d'ici avec l'erreur "find is not a type"*/
printf("%ld\n\n",str);
system("PAUSE");
return EXIT_SUCCESS;
}
Quelqu'un connaitrait la solution svp?
J'ai essayer de lire un fichier et de mettre le contenu dans une variable string mais je ne trouve pas d'autre solotion que de prendre la fonction fread et de mettre en premier parametre un pointeur string.Et après je veux rechercher une chaine de texte dans ce string(str) avec la fonction str.find("") mais comme c'est un pointeur ,mon compilateur(dev-cpp) dit qu'il y a une erreur.Voici mon code
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char *argv[])
{
FILE *file=fopen("C:\\arme.ase","r+");
string * str;
size_t found;
fseek (file , 0 , SEEK_END);
long size= ftell (file);
str=(string*) malloc (sizeof(string)*size);
rewind (file);
fread(str,1,size,file);
found=str.find("*MESH_VERTEX_LIST {");/* Le probleme vient d'ici avec l'erreur "find is not a type"*/
printf("%ld\n\n",str);
system("PAUSE");
return EXIT_SUCCESS;
}
Quelqu'un connaitrait la solution svp?
A voir également:
- Probleme avec la fonction find(en c++)
- Fonction si et - Guide
- Find and mount - Télécharger - Récupération de données
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Ava find - Télécharger - Divers Utilitaires
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; }