Tellg c++
mousekey
-
mousekey -
mousekey -
Bonjour
voici ma fct..
bool Fichier::TransformerBinaire(void){
fstream fichier,ficbinaire, fichierIndex;
char nom[255];
strcpy(nom, NomFichier);
fichier.open(nom, ios::in);
fichierIndex.open("fichierIndex.txt", ios::out);
ficbinaire.open("fichierBinaire.bin", ios::binary);
char ligne[1024];
if ( !fichier ){
cerr << "Erreur d'ouverture de fichier."<<endl;
exit(1);
}
int i = 0;
while(!fichier.eof()){
if ( (i % 200) == 0)
{
cout << "lecture en cours..."<<endl;
i=0;
}
i++;
fichier.getline(ligne,1024,'\n');
ficbinaire.write(reinterpret_cast<const char*>(&ligne),1024);
//cout << ficbinaire.tellg()<<endl;
int longueur_fichier = ficbinaire.tellg();
cout << longueur_fichier<<endl;
fichierIndex << ficbinaire.tellg();
//fichier >>fichier;
}
fichierIndex.close();
fichier.close();
ficbinaire.close();
return true;
}
quand j'exécute cette ligne
int longueur_fichier = ficbinaire.tellg();
la fct tellg me retourne toujours la valeur 0... cependant... j'utilise la fonction pour écrire dans un fichier binaire... pourqoui que j'ai toujours la valeur 0??
merci
mousekey
voici ma fct..
bool Fichier::TransformerBinaire(void){
fstream fichier,ficbinaire, fichierIndex;
char nom[255];
strcpy(nom, NomFichier);
fichier.open(nom, ios::in);
fichierIndex.open("fichierIndex.txt", ios::out);
ficbinaire.open("fichierBinaire.bin", ios::binary);
char ligne[1024];
if ( !fichier ){
cerr << "Erreur d'ouverture de fichier."<<endl;
exit(1);
}
int i = 0;
while(!fichier.eof()){
if ( (i % 200) == 0)
{
cout << "lecture en cours..."<<endl;
i=0;
}
i++;
fichier.getline(ligne,1024,'\n');
ficbinaire.write(reinterpret_cast<const char*>(&ligne),1024);
//cout << ficbinaire.tellg()<<endl;
int longueur_fichier = ficbinaire.tellg();
cout << longueur_fichier<<endl;
fichierIndex << ficbinaire.tellg();
//fichier >>fichier;
}
fichierIndex.close();
fichier.close();
ficbinaire.close();
return true;
}
quand j'exécute cette ligne
int longueur_fichier = ficbinaire.tellg();
la fct tellg me retourne toujours la valeur 0... cependant... j'utilise la fonction pour écrire dans un fichier binaire... pourqoui que j'ai toujours la valeur 0??
merci
mousekey
3 réponses
Bizarre en effet. Et tu as réellement écris des choses dans le fichier en question, ou pas ?
Je ne sais pas si ça va t'aider mais sinon tu peux essayer de passer par un seekg :
http://www.cplusplus.com/ref/iostream/istream/tellg.html
Bonne chance
Je ne sais pas si ça va t'aider mais sinon tu peux essayer de passer par un seekg :
http://www.cplusplus.com/ref/iostream/istream/tellg.html
Bonne chance
Bonjour,
à force de travailler sur le problème... je me suis rendu compte que le programme n'allait pas écrire dans le fichier binaire... Pourtant la commande fic.write est la bonne selon deux manuel de c++... peux tu m'aider...
merci
mousekey
à force de travailler sur le problème... je me suis rendu compte que le programme n'allait pas écrire dans le fichier binaire... Pourtant la commande fic.write est la bonne selon deux manuel de c++... peux tu m'aider...
merci
mousekey
Déjà vu que tu ne fais qu'écrire dedans ça devrait être des std::ofstream. Ensuite j'utiliserais plutôt l'opérateur <<, mais avec write ça doit marcher :
http://www.cplusplus.com/ref/iostream/ofstream/
http://www.cplusplus.com/ref/iostream/ostream/write.html
Au passage tu peux remplacer
Par
Il faut bien sur avoir inclu le header <string>
Bonne chance
http://www.cplusplus.com/ref/iostream/ofstream/
http://www.cplusplus.com/ref/iostream/ostream/write.html
Au passage tu peux remplacer
char nom[255]; strcpy(nom, NomFichier); fichier.open(nom, ios::in)
Par
std::string nom=NomFichier; fichier.open(nom.c_str(), ios::in)
Il faut bien sur avoir inclu le header <string>
Bonne chance