Pb avec ifstream et ofstream

Résolu
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 - 28 juil. 2004 à 13:12
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 - 2 août 2004 à 14:33
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

Hylvenir Messages postés 364 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 5 octobre 2006 2
29 juil. 2004 à 09:58
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
3
Hylvenir Messages postés 364 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 5 octobre 2006 2
29 juil. 2004 à 18:04
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
3
Hylvenir Messages postés 364 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 5 octobre 2006 2
29 juil. 2004 à 03:08
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
0
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
29 juil. 2004 à 09:35
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
29 juil. 2004 à 16:54
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
0
Hylvenir Messages postés 364 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 5 octobre 2006 2
29 juil. 2004 à 16:59
oui

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

par exemple

// Ma participation à la saturation du net:
// http://hylvenir.free.fr
0
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
29 juil. 2004 à 17:02
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
0
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
2 août 2004 à 10:25
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
0
Hylvenir Messages postés 364 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 5 octobre 2006 2
2 août 2004 à 10:43
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
0
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
2 août 2004 à 10:48
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
0
Hylvenir Messages postés 364 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 5 octobre 2006 2
2 août 2004 à 11:29
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
0
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
2 août 2004 à 14:33
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
0
Rejoignez-nous