1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
//ouverture du fichier
std::ifstream fichier(nom.c_str());//ou nom est une std::string contenant
//... le nom du fichier à ouvrir
if(fichier)
{
std::stringstream buffer;
buffer<<fichier.rdbuf();
fichier.close();
std::string str;
buffer>>str;
//la première ligne doit etre "P3"
if(str!="P3") //c'est peut etre à adapter ;)
throw std::runtime_error("format invalide");
la deuxième ligne doit etre un commentaire
std::getline(buffer,str);
if(str[0]!='#')
throw std::runtime_error("format invalide");
int ligne;
int colone;
buffer>>ligne>>colone;
//création du tableau à afficher (il s'agit en fait d'un tableau de char
//dont les valeurs doivent etre récupérée
char *final=new char[ligne*colone];
//la dernière boucle
for(int i=0;i< ligne*colone;i++) //si le compilo fait bien son travail,
// ce ne sera pas plus lent que d'avoir calculé un total=ligne*colone
// au par avant
{
//ce qu'on lit, c'est un entier
int lu;
buffer>>lu;
fini[i]=(char)lu;//permet de ne prendre que les 8 bits de l'entier qui
//nous intéresse
}
//on peut retourner le tableau final
return fini;
} |
Partager