J'ai crée une fonction qui écrit ce que contient le fichier tant que la ligne n'est pas égale a "[/END]", auquel cas, elle renverait -1. Seulement, chaque fois que j'utilise cette fonction, elle foire !
Voici un code pour la tester :
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78 #include <string> #include <fstream> #include <iostream> #include <sstream> int PASSAGE_FONCTION = 0; using namespace std; int lire(string *&line, string &avatar); int main(int argc, char *argv[]) { string *line; string avatar; int total_lignes = 0; total_lignes = lire(line, avatar); while (total_lignes != -1) { cout << avatar << " dit : " << endl; for (int i=0; i<total_lignes; i++) cout << line[i] << endl; total_lignes = lire(line, avatar); } } int lire(string *&line,string &s_avatar) { string buffer; ifstream f("dialogues.dlog"); int n_lignes = 0; int j = 0; while (j<=PASSAGE_FONCTION) { getline(f, buffer); if (buffer == "[/END]") return -1; s_avatar = buffer.substr(buffer.find("[")+1, buffer.find("/")-1); //On lit l'avatar istringstream line_read(buffer.substr(buffer.find("Lignes=")+7, buffer.find("/")-1) ); //On lit le nb de lignes line_read >> n_lignes; if (j==PASSAGE_FONCTION) line = new string[n_lignes]; for(int i = 0; (getline(f, buffer) && buffer != "[/" + s_avatar + "]"); i++) { line[i]= buffer; } j++; } f.close(); PASSAGE_FONCTION++; return n_lignes; }
Et le fichier dialogues.dlog contient ceci :
[Melia/Lignes=4/Side=Left]
La fusion nucléaire est un des deux types de réaction thermo-nucléaire.
C'est un processus où deux noyaux atomiques s'assemblent pour former un noyau plus lourd.
La fusion de noyaux légers dégage d'énormes quantités d'énergie provenant du défaut de masse (cf. énergie de liaison).
Cette réaction est à l'œuvre dans le soleil et toutes les étoiles de notre univers.
[/Melia]
[Solas/Lignes=5/Side=Right]
Bien que chargés positivement et se repoussant d'après la loi de Coulomb,
deux noyaux peuvent se percuter et leur collision entraîner une réaction de fusion nucléaire,
si les noyaux se rapprochent à une distance inférieure ou égale à leur diamètre. Pour cela,
ils doivent se trouver dans un état d'agitation thermique très élevé (voir plus bas : Plasmas de fusion).
Au sein du soleil par exemple, la température atteint 15 millions de degrés Celsius pour réaliser la fusion de l'hydrogène en hélium.
[/Solas]
[Melia/Lignes=2/Side=Right]
Dans certaines étoiles plus massives, des températures plus élevées, permettent la fusion de noyaux plus lourds.
Cette température élevée permet en fait le franchissement de la barrière de potentiel coulombien (répulsion des noyaux) par effet tunnel.
[/Melia]
[Solas/Lignes=4/Side=Right]
Lorsque de petits noyaux fusionnent, le noyau résultant se trouve dans un état instable et doit
décroître vers un état stable en émettant une particule (photon, électron ou autre).
Une partie de l'énergie excédentaire est transmise à la particule émise sous forme d'énergie cinétique.
L'autre partie est libérée sous forme de chaleur (réaction exothermique) et forme ainsi une chaîne qui s'auto-entretient.
[/Solas]
[/END]
Vous remarquer que la fonction ne lit meme pas lel fichier jusqu'au bout
Merci de votre aide, ca fait deux jour que je bloque la dessus, ca devient un peu ch***
acieroid
Partager