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. 4465424
    

    verstehe 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)
    

Anmelden zum Antworten