A voir également:
- Lire une matrice dans un fichier texte en C++
- Dans le texte, un seul mot a réellement été écrit en lettres capitales (majuscules). quel est ce mot ? ✓ - Forum Word
- Fichier rar - Guide
- Téléchargez cette archive (dossier compressé). en extraire tous les fichiers dans un dossier local. quel fichier contient l’expression trouverpix ? ✓ - Forum Windows
- Fichier host - Guide
- Lire fichier iso - Guide
4 réponses
Hello !
Tu peux wrapper l'appel de getline dans une classe si tu préfères.
Tu pourras continuer à écrire Fichier >> Ligne;
<pre class=code>
#include <iostream>
#include <sstream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;
class ligne_matrice : public string
{
};
inline
istream& operator>>(istream& In, ligne_matrice& L)
{
return getline(In, L);
}
int main()
{
ifstream FichierMatrice("matrice.txt",ios::in);
if (!FichierMatrice)
{
cerr << "Ouverture du fichier impossible" << endl;
exit(1);
}
int val;
unsigned int Lignes = 0;
unsigned int Colonnes = 0;
// lecture de chaque ligne :
ligne_matrice Ligne;
while (FichierMatrice >> Ligne)
{
Lignes++;
Colonnes = 0;
istringstream S(Ligne, ios_base::in);
// lecture de chaque element :
while (S >> val)
{
Colonnes++;
cout << val << " ";
}
cout << endl << "Ligne " << Lignes << " contient " << Colonnes << " colonnes." << endl;
}
return 0;
}
</pre>
Tu peux wrapper l'appel de getline dans une classe si tu préfères.
Tu pourras continuer à écrire Fichier >> Ligne;
<pre class=code>
#include <iostream>
#include <sstream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;
class ligne_matrice : public string
{
};
inline
istream& operator>>(istream& In, ligne_matrice& L)
{
return getline(In, L);
}
int main()
{
ifstream FichierMatrice("matrice.txt",ios::in);
if (!FichierMatrice)
{
cerr << "Ouverture du fichier impossible" << endl;
exit(1);
}
int val;
unsigned int Lignes = 0;
unsigned int Colonnes = 0;
// lecture de chaque ligne :
ligne_matrice Ligne;
while (FichierMatrice >> Ligne)
{
Lignes++;
Colonnes = 0;
istringstream S(Ligne, ios_base::in);
// lecture de chaque element :
while (S >> val)
{
Colonnes++;
cout << val << " ";
}
cout << endl << "Ligne " << Lignes << " contient " << Colonnes << " colonnes." << endl;
}
return 0;
}
</pre>
Ravachol
Messages postés
560
Date d'inscription
vendredi 5 mars 2004
Statut
Membre
Dernière intervention
30 octobre 2005
119
18 sept. 2004 à 09:19
18 sept. 2004 à 09:19
Salut.
Tu peux utiliser la fonction getline().
Dans ton cas tu crée une variable : string ligne
et tu fais getline(FichierMatrice, ligne) à la place de FichierMatrice>>val;
A++
La pensée ne commence qu'avec le doute.
ROGER MARTIN DU GARD
Tu peux utiliser la fonction getline().
Dans ton cas tu crée une variable : string ligne
et tu fais getline(FichierMatrice, ligne) à la place de FichierMatrice>>val;
A++
La pensée ne commence qu'avec le doute.
ROGER MARTIN DU GARD
Plus lisible :
#include <iostream>
#include <sstream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;
class ligne_matrice : public string
{
};
inline
istream& operator>>(istream& In, ligne_matrice& L)
{
return getline(In, L);
}
int main()
{
ifstream FichierMatrice("matrice.txt",ios::in);
if (!FichierMatrice)
{
cerr << "Ouverture du fichier impossible" << endl;
exit(1);
}
int val;
unsigned int Lignes = 0;
unsigned int Colonnes = 0;
// lecture de chaque ligne :
ligne_matrice Ligne;
while (FichierMatrice >> Ligne)
{
Lignes++;
Colonnes = 0;
istringstream S(Ligne, ios_base::in);
// lecture de chaque element :
while (S >> val)
{
Colonnes++;
cout << val << " ";
}
cout << endl << "Ligne " << Lignes << " contient " << Colonnes << " colonnes." << endl;
}
return 0;
}