Lire une matrice dans un fichier texte en C++
Phil
-
phil -
phil -
Bonjour tout le monde
j'ai besoin de l'aide SVP, j'ai une matrice de la forme suivante stockée dans un fichier texte, par ex:
1 2 3 4
5 6 7 8
9 5 8 7
4 4 4 4
alors ma question comment je peux faire pour savoir le nb de ligne et le nb d.elements deja lu.
y a t il une facon de dire while (! end of line ) comme ca je peux faire un compteur pour les lignes.
voici mon code
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;
int main()
{
int val;
//string nomFichier;
//cout<<"Entrez le nom du fichier qui contient la matrice: ";
//cin>>nomFichier;
ifstream FichierMatrice ("matrice.txt",ios::in );
if(!FichierMatrice){
cerr<<"Ouverture du fichier impossible"<<endl;
exit(1);
}
while (!FichierMatrice.eof()){
FichierMatrice>>val;
cout<<val<<endl;
}
return 0;
}
Merci d'avance
j'ai besoin de l'aide SVP, j'ai une matrice de la forme suivante stockée dans un fichier texte, par ex:
1 2 3 4
5 6 7 8
9 5 8 7
4 4 4 4
alors ma question comment je peux faire pour savoir le nb de ligne et le nb d.elements deja lu.
y a t il une facon de dire while (! end of line ) comme ca je peux faire un compteur pour les lignes.
voici mon code
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;
int main()
{
int val;
//string nomFichier;
//cout<<"Entrez le nom du fichier qui contient la matrice: ";
//cin>>nomFichier;
ifstream FichierMatrice ("matrice.txt",ios::in );
if(!FichierMatrice){
cerr<<"Ouverture du fichier impossible"<<endl;
exit(1);
}
while (!FichierMatrice.eof()){
FichierMatrice>>val;
cout<<val<<endl;
}
return 0;
}
Merci d'avance
A voir également:
- Lire une matrice dans un fichier texte en C++
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Lire un fichier epub - Guide
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier rar - 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>
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; }