Guten Morgen!
Also ich sitze jetzt schon seit langer Zeit an einem sicherlich ziemlich simplem Problem.
Ich habe eine Struktur in eine Datei geschrieben, die mir als Konfiguration dient.
In einer Funktion habe ich die Datei wieder in einen String eingelesen, wo ich sie auswerten will.
In der Datei stehen nur 0en und 1en, sprich es sieht wie eine Binäre Datei aus.
Die einzelnen Werte räpresentieren alle einen Bool, die in meiner Struktur stehen sollen.
Eingelesen werden sie richtig, da ich mit einer Ausgabe überprüft habe, ob in dem String das gleiche wie in der Datei steht.
Allerdingst bei der Auswertung funktioniert es nicht richtig, da er, egal ob ich eine 0 oder 1 habe, IMMER den wert false zuordnet.
Hier mal der relevante Codeausschnitt:
|
C-/C++-Quelltext
|
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
79
80
81
82
83
84
85
86
87
88
89
90
91
|
struct STileConfig
{
bool bVisible; //Ob der Teil der Karte bereits aufgedeckt wurde
bool bMine; //On der Teil der Karte vermient ist
bool bLeftBlock; //Ob an der linken Seite eine Blokade ist
bool bRightBlock; //Ob an der rechten Seite eine Blockade ist
bool bUpBlock; //On an der oberen Seite eine Blockade ist
bool bDownBlock; //Ob an der unteren Seite eine Blockade ist
};
int Pos = 0;
while(Pos < 1152)
{
if(sZwischenspeicher.at(Pos) == 1)
{
Tile.bVisible = true;
cout << "True\n";
}
else
{
Tile.bVisible = false;
cout << "False\n";
}
Pos++;
if(sZwischenspeicher.at(Pos) == 1)
{
Tile.bMine = true;
cout << "True\n";
}
else
{
Tile.bMine = false;
cout << "False\n";
}
Pos++;
if(sZwischenspeicher.at(Pos) == 1)
{
Tile.bUpBlock = true;
cout << "True\n";
}
else
{
Tile.bUpBlock = false;
cout << "False\n";
}
Pos++;
if(sZwischenspeicher.at(Pos) == 1)
{
Tile.bDownBlock = true;
cout << "True\n";
}
else
{
Tile.bDownBlock = false;
cout << "False\n";
}
Pos++;
if(sZwischenspeicher.at(Pos) == 1)
{
Tile.bLeftBlock = true;
cout << "True\n";
}
else
{
Tile.bLeftBlock = false;
cout << "False\n";
}
Pos++;
if(sZwischenspeicher.at(Pos) == 1)
{
Tile.bRightBlock = true;
cout << "True\n";
}
else
{
Tile.bRightBlock = false;
cout << "False\n";
}
//Konfigurieren
m_MapConfig.push_back(Tile);
Pos++;
}
|
Egal, ob in meinem String getzt eine 1 oder 0 an der aktuellen Position steht, es wird immer auf false gesetzt.
Habe schon versucht, in der if - Abfrage noch einmal den Wert umzuwandeln mit folgenen Code:
|
C-/C++-Quelltext
|
1
2
3
|
if((int) sZwischenspeicher.at(Pos) == 1)
//und
if(atoi(&sZwischenspeicher.at(Pos)) == 1)
|
Liebe Grüße und Danke im Vorhinein,
Ombalat