Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

lire des chaines de caractére (string) dans un fichier externe

2 réponses
Avatar
lebail_herve
Bonjour à tous,

Un petit probleme de c++ qui concerne la classe string. Le but du
programme est de lire des données dans un fichier externe appelle
"instruction.txt" dont voici le listing :

----------------------------
-- fichier instruction.txt--
----------------------------

!!!!NUMBER OF DATA FILE
3
!!!! NUMBER OF COORDINATES
4
!!!! eps_dalpha =
0.001
... etc ...

le but du jeu est de lire la premiere ligne a consigner dans un string
juste pour verifier que l'on a bien la bonne chaine de caracteres,
puis la deuxieme et enregistrer dans ue variable int le chiffre 3, etc
...

le programme est :

// programme principal
// optimisateur local

#include <fstream>
#include <iostream>
#include <string>
#include <vector>

using std::cout;
using std::cin;
using std::cerr;
using std::endl;
using std::ios;
using std::ofstream;
using std::string;

int n_file;
int n_coord;
double eps_dalpha;
double eps_dalpha_MUL_MAX;
double epsilon;

int main()
{
int in_file;
int in_points;
int in_coord;
int n_data;
int n_param;
int in_param;
string ligne;

///////////////////////////////////////////////////////
// ouverture en lecture du fichier "instructions.txt"//
///////////////////////////////////////////////////////

ofstream finstruction("instruction.txt",ios::in);

if (!finstruction)
{
cerr << "ouverture du fichier"
<< " instructions.txt impossible" << endl;
exit(1);
}

getline(finstruction,ligne);
// finstruction >> ligne;
cout << "ligne lue " << ligne << endl;

return 0;
}

DONC si on avait une saisie clavier getline(cin,ligne) peut
fonctionner [teste par myself], mais que faire des lors qu'on a un
flux de donnees provenant d'un fichier externe ? j'ai aussi essaye
[tres naivement je suppose ...] l'instruction "finstruction >> ligne"
sans succes.

Alors si quelqu'un peut m'aider ...

D'avance merci

@+, Herve

2 réponses

Avatar
Fabien LE LEZ
On 6 Feb 2004 02:03:21 -0800, (Herv? LEBAIL)
wrote:

DONC si on avait une saisie clavier getline(cin,ligne) peut
fonctionner [teste par myself],


C'est même la solution que je préconise.

mais que faire des lors qu'on a un
flux de donnees provenant d'un fichier externe ?


Idem. Où est le problème ?

j'ai aussi essaye
[tres naivement je suppose ...] l'instruction "finstruction >> ligne"
sans succes.


Effectivement, >> s'arrête après le premier espace.

--
;-)

Avatar
fontaine jean paul
je crois que ofstream c'est pour l'ecriture dans un fichier
pour la lecture if faudrai employer ifstream

Herv? LEBAIL wrote:

Bonjour à tous,

Un petit probleme de c++ qui concerne la classe string. Le but du
programme est de lire des données dans un fichier externe appelle
"instruction.txt" dont voici le listing :

----------------------------
-- fichier instruction.txt--
----------------------------

!!!!NUMBER OF DATA FILE
3
!!!! NUMBER OF COORDINATES
4
!!!! eps_dalpha > 0.001
... etc ...

le but du jeu est de lire la premiere ligne a consigner dans un string
juste pour verifier que l'on a bien la bonne chaine de caracteres,
puis la deuxieme et enregistrer dans ue variable int le chiffre 3, etc
...

le programme est :

// programme principal
// optimisateur local

#include <fstream>
#include <iostream>
#include <string>
#include <vector>

using std::cout;
using std::cin;
using std::cerr;
using std::endl;
using std::ios;
using std::ofstream;
using std::string;

int n_file;
int n_coord;
double eps_dalpha;
double eps_dalpha_MUL_MAX;
double epsilon;

int main()
{
int in_file;
int in_points;
int in_coord;
int n_data;
int n_param;
int in_param;
string ligne;

///////////////////////////////////////////////////////
// ouverture en lecture du fichier "instructions.txt"//
///////////////////////////////////////////////////////

ofstream finstruction("instruction.txt",ios::in);

if (!finstruction)
{
cerr << "ouverture du fichier"
<< " instructions.txt impossible" << endl;
exit(1);
}

getline(finstruction,ligne);
// finstruction >> ligne;
cout << "ligne lue " << ligne << endl;

return 0;
}

DONC si on avait une saisie clavier getline(cin,ligne) peut
fonctionner [teste par myself], mais que faire des lors qu'on a un
flux de donnees provenant d'un fichier externe ? j'ai aussi essaye
[tres naivement je suppose ...] l'instruction "finstruction >> ligne"
sans succes.

Alors si quelqu'un peut m'aider ...

D'avance merci

@+, Herve