In deatei speichern
-
hello
wie kNnn ich in eine datei speichenr?
hier mein quellC.:
std::ofstream input(file); if(!file) std::cerr << "Datei wurde nicht gefunden oder ist beschaedigt." << std::endl; int i = 0; while(input.eof()) { input << data_list[i] << std::endl; ++i; } input.close();und wenn ich die datei dann öffne, ist sie leer

hoffe ihr könnt mir ein bisschen helfen

-
warum prüfst du beim schreiben auf eof?
PS: Nimm mal nen Debugger
-
ähm schrieb:
warum prüfst du beim schreiben auf eof?
damit ich bis zum ende der datei was reinschreiben soll.
ähm schrieb:
PS: Nimm mal nen Debugger
ich hab keinerlei erfahrung darin

-
wenn du beim schreiben bis zum ende der datei prüfst, dann prüfst du dich dumm und dämlich
mache es lieber so
#include<iostream> #include<fstream> using namespace std; int main() { std::string in_datei ="Hallo Liebe Datei"; fstream input; input.open("Test.txt",ios::out);//ios::out is zum schreiben in eine datei input<<in_datei; // hiermit schreibst du in die datei input.close(); return 0; }
-
öffne die datei doch direckt beim deklarieiren:
ofstream input("name.erweiterung");close() würde ich nur machen wenn danach noch was kommt im prog und dann würde ich auch clear() machen, damit input noch einmal benutzt werden kann:
input.close(); input.clear();datesav schrieb:
und wenn ich die datei dann öffne, ist sie leer

natürlich ist sie das, denn wenn sie leer ist und du bis zum ende schreiben willst, dann ist das ende SOFORT erreicht und nichts wird geschrieben.
machs doch so:
for(int i = 0; i < data_list.lenghth(); i++) { input << data_list[i] << std::endl; }dann schreibt er den gesamten inhalt des data_list arrays in die datei.
-
also wenn ich die datei dann lese, sehe ich komische Zahlen trotz
for(size_t i = 0; i != sz_list; ++i) data_list[i] = 0;zb HIER:
73. 0 74. 0 75. 0 76. 0 77. 0 78. 0 79. 0 80. 0 81. 0 82. 0 83. 0 84. 0 85. 0 86. 0 87. 0 88. 0 89. 0 90. 0 91. 0 92. 0 93. 0 94. 0 95. 0 96. 0 97. 0 98. 0 99. 0 100. 0 101. 0 102. 0 103. 0 104. 0 105. 0 106. 0 107. 0 108. 0 109. 0 110. 0 111. 0 112. 0 113. 0 114. 0 115. 0 116. 0 117. 0 118. 0 119. 0 120. 0 121. 0 122. 0 123. 0 124. 0 125. 0 126. 0 127. 128 128. -858993460 129. -858993460 130. 1245080 131. 4615475 132. 1 133. 15540336 134. 15540464 135. -1217539691 136. 0 137. 0 138. 2147299328 139. 0 140. 1536 141. 0 142. 6000 143. 0 144. 2316312 145. 2 146. 0 147. 0 148. 6 149. 1245000 150. 48 151. 1245148 152. 4462454 153. -1221396859 154. 0 155. 1245088 156. 4614893 157. 1245100 158. 2009741363 159. 2147299328 160. 1245164 161. 2008263101 162. 2147299328 163. 1223666 164. 0 165. 0 166. 2147299328 167. 0 168. 0 169. 0 170. 1245112 171. 0 172. -1 173. 2008058866 174. 2008327446 175. 0 176. 0 177. 0 178. 4465424verstehe aber nicht wieso die nicht 0 sind. 127 hab ich selber bestimmt, aber ist ja nicht wichtig.
mfg
-
wie groß is denn das
data_list, also zeig mal etwas mehr code. das sieht sehr nach out_of_bounds exception aus
-
Firefighter schrieb:
wie groß is denn das
data_list, also zeig mal etwas mehr code. das sieht sehr nach out_of_bounds exception aus
128 ... ist zu klein, aber zu groß kann des auch net sein
const int sz_list = 128;
-
hab doch schon alles mögliche angegeben

evtl noch das:
void func(const char* file) { std::fstream input(file, std::ios::out); if(!file) std::cerr << "Datei wurde nicht gefunden oder ist beschaedigt." << std::endl; for(int i = 0; i != sizeof(data_list); ++i) { input << i << ". " << data_list[i] << std::endl; } input.close(); std::cout << "Daten gespeichert." << std::endl; }
-
warum
if(!file)muss das nicht heißen:
if(!input)