Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » *txt - Datei

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
13.02.2017, 16:22 Uhr
berolld



Hallo,

mit folgenden Code erstelle ich eine txt-Datei:


Code:

write.open("/storage/emulated/0/download/text1.txt", std::ios::out | std::ios::app);




wie kann ich, wenn es die Datei text1.txt schon gibt, beim erneuten aufrufen des Programms,
der Datei eine Nummer hinzufügen bzw die Nummer erhöhen, dass eine neue *txt-Datei erstellt wird.

z.B:
Text1.txt
Text2.txt
Text3.txt
usw.

Gruß

berolld
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
13.02.2017, 19:48 Uhr
ao

(Operator)


Indem du den String, der den Namen enthält, per Software zusammenbaust. Man macht sowas am einfachsten mit std::stringstream:


C++:
#include <sstream>

int nextNumber = GetNextFileNumber () // nächste Nummer bestimmen, wie auch immer
std::stringstream s;
s << "/storage/emulated/0/download/text" << nextNumber << ".txt";

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
21.02.2017, 13:32 Uhr
berolld



Ich habe folgendes gemacht jetzt.


C++:
       char x = 1;

        std::string s= test1.str() + a.c_str()+ b.c_str()+c.c_str()+d.c_str()+x+".txt" ;
        if(!write){
                       std::string s= test1.str() + a.c_str()+ b.c_str()+c.c_str()+d.c_str()+x+".txt" ;
       }
       else{
            x++;
          std::string s= test1.str() + a.c_str()+ b.c_str()+c.c_str()+d.c_str()+x+".txt" ;
       }

    write.open(s , std::ios::out | std::ios::app);
        
            
    
       write.close();




Hat vllt jemand eine Idee woran das scheitern kann, ich erhalte keine Fehlermeldung und es wird ausgeführt, jedoch wird keine Zahl angehangen. Und ein int für das X wir nciht akzeptiert.

Dieser Post wurde am 21.02.2017 um 13:38 Uhr von berolld editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
21.02.2017, 14:57 Uhr
ao

(Operator)


Weil das Zeichen mit der Nummer 1 nicht dasselbe ist wie das Zeichen '1'.

Ordentliche Lösung: Mit stringstream, wie oben. Das verarbeitet auch integer-Daten richtig.
Dreckige Lösung:

C++:
char x = '1';




Zitat:
Und ein int für das X wir nciht akzeptiert.

Nein, weil es keinen +-Operator gibt, der string und int verknüpfen kann. Für string und char gibt es den, darum kriegst du keine Fehlermeldung. Er macht aber nicht das, was du willst, weil, wie gesagt, 1 und '1' nicht dasselbe sind.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
22.02.2017, 17:54 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


oder C++11: std::to_string

(siehe z.B. http://stackoverflow.com/questions/8065413/stdlexical-cast-is-there-such-a-thing )
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
24.02.2017, 22:28 Uhr
berolld




Zitat von ao:
Weil das Zeichen mit der Nummer 1 nicht dasselbe ist wie das Zeichen '1'.

Ordentliche Lösung: Mit stringstream, wie oben. Das verarbeitet auch integer-Daten richtig.
Dreckige Lösung:

C++:
char x = '1';




Zitat:
Und ein int für das X wir nciht akzeptiert.

Nein, weil es keinen +-Operator gibt, der string und int verknüpfen kann. Für string und char gibt es den, darum kriegst du keine Fehlermeldung. Er macht aber nicht das, was du willst, weil, wie gesagt, 1 und '1' nicht dasselbe sind.



Danke hat bestens geklappt!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: