Bonjour,
J'ai un fichier texte :
6 4
######
# ##
# # #
######
Et je dois récupérer le premier et le deuxième chiffre dans deux variables.
J'ai fais ceci, c'est un peu laborieux mais, je n'arrive pas à utiliser l’opérateur "<<".
Ça fonctionne mais je sais qu'il existe un moyen de le faire en deux trois lignes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 const string Nom_fichier="./terrain.txt"; string ligneCourante;//Chaine de caractère qui contien le ligne actuelle ifstream fichier;// Création du fichier fichier.open(Nom_fichier.c_str());//Ouverture du fichier if(!fichier.is_open())//Vérification de 'louverture du fichier { cout<<"Impossible d'ouvrir le fichier"<<endl; return false; } getline(fichier, ligneCourante); size_t posSuivante = 0, pos=0;//Variable ressortant la position de l'espace bool Fin_de_la_ligne = false;//Si on a atteint la fin de la ligne vector <string> champs;//Création du tableau qui contiendra les paramètres récupéré while(!Fin_de_la_ligne) { posSuivante=ligneCourante.find(' ', pos); if(posSuivante!=string::npos) { champs.push_back(ligneCourante.substr(pos, posSuivante-pos)); pos=posSuivante+1; } else { champs.push_back(ligneCourante.substr(pos, string::npos)); Fin_de_la_ligne=true; } } largeur = atoi(champs[0].c_str()); hauteur = atoi(champs[1].c_str());
Ensuite, j'aimerais récupérer caractère par caractère et ligne par ligne pour créer une grille de jeu :
Merci d'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 ///Création du terrain char **terrain_defaut; terrain_defaut= new char*[hauteur]; for(unsigned int i = 0; i < largeur; i++) { terrain_defaut[i] = new char[largeur]; } terrain = new Case[largeur*hauteur]; for(y=0;y<hauteur;++y) for(x=0;x<largeur;++x) if (terrain_defaut[y][x]=='#')//#, c'est le caractère a récupérer terrain[y*largeur+x] = MUR; else terrain[y*largeur+x] = VIDE;
Partager