Pb avec ifstream et ofstream [Résolu]

Signaler
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
-
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
-
Je créé un prog qui lit un fichier et qui après un traitement le reconstitu et j'ai le problème suivant.

En faisant avec un fichier texte de 1ko maxi ça va et avec un truc de 32Ko ça ne va pas (ça ne le lit pas en entier !!)

Vous voulez des RPG gratuits allez sur http://jeux.jscv.com !!!

Le créateur du site http://www.jscv.com

12 réponses

Messages postés
364
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 octobre 2006
2
Sauf si tu as surchargé l'opérateur >> sur une class hypothétique dont buf serait une instance et te permettent de lire directement une image (binaire) à partir d'un flux.... il ne faut pas utiliser >> pour lire
(lecture formattée dans une chaîne sûrement ici)
Utilise plutôt
while( fichiero.getline( buf, sizeof( buf ), '\n' )

Pour l'autre point, à ma connaissance tu ne peux pas avec >>
il faut par exemple utiliser
std::string line;
while( getline( file, line ) )
{
// Lecture d'une ligne complète (jusqu'au \n suivant)
// ensuite un ostringstream te permet de découper simplement
// par espace ou tabulation.
}

// Ma participation à la saturation du net:
// http://hylvenir.free.fr
Messages postés
364
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 octobre 2006
2
Un fichier binaire contenant un double

#include 
#include <fstream>
using namespace std;

int main()
{
    double pi = 3.1415926;

    ofstream fileOut( "pi.bin", ios::out | ios::binary );
    fileOut.write( (const char*)&pi, sizeof( pi ) );
    fileOut.flush();  // ne pas oublier ou close();

    pi = 0.0;

    ifstream fileIn( "pi.bin", ios::in | ios::binary );
    fileIn.read( (char*)&pi, sizeof( pi ) );
    cout << "PI : [" << pi << "]\n";
}


//Ma participation à la saturation du net:
//http://hylvenir.free.fr
Messages postés
364
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 octobre 2006
2
Dois pas y avoir de pb avec les ifstreams pour un fichier aussi petit.
Essaye de mettre un exemple de ton code qui pose problème.

// Ma participation à la saturation du net:
// http://hylvenir.free.fr
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
6
ok

ifstream fichiero("fichier.txt");
while (!fichiero.eof())
{
fichiero >> buf;
// Traitement
}
fichiero.close();



Explications : Quand il lit une bitmap ou un .exe il s'arrête en faisant 3 caractères mais avec un fichier texte Nickel.

J'ai une autre question comment savoir entre deux >> si il a été à la ligne si il a fait un espace, une tabulation ?

Merci

Vous voulez des RPG gratuits allez sur http://jeux.jscv.com !!!

Le créateur du site http://www.jscv.com
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
6
Est-ce possible avec ifstream ou ofstream de lire ou d'enregistrer en binaire ???

Vous voulez des RPG gratuits allez sur http://jeux.jscv.com !!!

Le créateur du site http://www.jscv.com
Messages postés
364
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 octobre 2006
2
oui

ios:binary puis file.get( buf, sizeof(buf) );

par exemple

// Ma participation à la saturation du net:
// http://hylvenir.free.fr
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
6
merci de donner un exemple sous forme de code




Vous voulez des RPG gratuits allez sur http://jeux.jscv.com !!!

Le créateur du site http://www.jscv.com
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
6
Bonjour la variable créé avec ostream est de quel type ?

FILE ou FILE * ne doit apparament pas être ça

le compilateur me dit void* alors ?

Vous voulez des RPG gratuits allez sur http://jeux.jscv.com !!!

Le créateur du site http://www.jscv.com
Messages postés
364
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 octobre 2006
2
ostream est une classe ( basic_ostream sur char on va dire )

cout << typeid( fileOut ).name() << endl;

te permet d'avoir des infos pour ton instance (ici son nom)

// Ma participation à la saturation du net:
// http://hylvenir.free.fr
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
6
Je vais être plus clair je veux créer une fonction avec passage d'argument dont le "handle" du fichier mais de quel type est-il ?

Ou plutôt que dois-je indiquer comme type

Merci

Vous voulez des RPG gratuits allez sur http://jeux.jscv.com !!!

Le créateur du site http://www.jscv.com
Messages postés
364
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 octobre 2006
2
En général le type d'une variable se situe avant la variable dans sa
déclaration ;-)

void print( ostream& os, const char* chaine )
{
os << "J'écris des trucs dans mon flux\n";
os << chaine << endl;
}

// Ma participation à la saturation du net:
// http://hylvenir.free.fr
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
6
comment écrire en binaire une chaîne de caractère ?

Vous voulez des RPG gratuits allez sur http://jeux.jscv.com !!!

Le créateur du site http://www.jscv.com