für temporäre Dateien verwenden Sie die tempnam
function Standardbibliothek oder Familie (z std::tmpfile
).
Wenn Sie nicht zufrieden sind mit tempnam
dann können Sie jeden dieser Ansätze verwenden:
erstellen eine ähnliche Reihe systematischen Namen auf z.B. ein Zähler.
Ein Zähler kann als explizites Argument an die Funktion übergeben werden oder ein Klassendatenelement (mit der Funktion als Funktionsmember) oder eine statische lokale Variable in der Funktion oder eine Namespacebereichsvariable . Ich denke, ich würde das Klassendatenmitglied verwenden.
Erstellen Sie Namen aus hochauflösenden Zeitstempeln.
Dies begrenzt die Rate der Namensgenerierung, aber Dateierstellung ist eine zeitaufwendige Aktion, so dass die Rate kein praktisches Problem sein sollte. Und auf der positiven Seite, jeder Name der Datei sagt dann, wann es erstellt wurde.
Verwenden Sie UUIDs.
Ein UUID, ein Universell eindeutiger IDentifier, ist eine 128-Bit-Pseudozufallskennung, die extrem unwahrscheinlich ist, mit jeder anderen generierten UUID identisch zu sein. Leider bietet die C++ - Standardbibliothek keine UUID-Unterstützung. Aber es gibt verfügbare UUID-Generierung für jede allgemein verwendete allgemeine Computerplattform.
Wenn Sie die Zeitstempel wollen, aber ohne die Ratenbegrenzung (Auflösung des Zeitstempels), dann können Sie es mit dem Gegen Ansatz kombinieren, das heißt beide verwenden.
Ich würde UUIDs nicht wirklich empfehlen, weil sie für uns Menschen schwer zu merken und zu erkennen sind. Wenn Sie nur den Blick vom Debugger oder von einer Ablaufverfolgung auf eine Verzeichnisanzeige richten, ist die UUID, die Sie gesehen haben, möglicherweise aus Ihren Gedanken verschwunden. Sequenznummern und Zeitstempel sind menschenfreundlicher.
In Bezug auf
” Ich bin If-Else nicht verwenden Willing Da ich ein sehr viele Dateien
& hellip benötigen; das ist eine Quatsch-Anforderung.
Um bessere Antworten auf Ihre Fragen zu erhalten, geben Sie einfach das Problem an und fügen Sie keine einschränkenden Anforderungen hinzu, die auf Ihrer Bewertung der Güte oder Nichtsicht einer bestimmten (Nicht-) Lösung basieren.
Willkommen bei stackoverflow.com. Bitte nehmen Sie sich etwas Zeit, [die Hilfeseiten] (http://stackoverflow.com/help) zu lesen, besonders die Abschnitte mit dem Namen ["Welche Themen kann ich hier fragen?"] (Http://stackoverflow.com/help/) on-topic) und ["Welche Art von Fragen sollte ich vermeiden zu fragen?"] (http://stackoverflow.com/help/dont-ask). Lesen Sie auch, wie Sie gute Fragen stellen können (http://stackoverflow.com/help/how-to-ask) und erfahren Sie, wie Sie ein [minimales, vollständiges und verifizierbares Beispiel] erstellen können (http: // stackoverflow .com/hilfe/mcve). –
Wurde zum erneuten Öffnen ausgewählt, da hierfür Standardfunktionen für die Bibliothek zur Verfügung stehen. Die Frage ist breit, aber nicht zu weit gefasst. –
Rolled zurück Iwans bearbeiten, weil es (1) eine Anforderung (das Nein, wenn sonst) entfernt, und (2) eine andere Anforderung hinzugefügt (von einem Wert zwischen Anrufen beibehalten, die keine Beobachtung ist, sondern eine neue Anforderung, die passiert passt Ivans eigene Antwort). –