Es gibt keine portable C ++ Möglichkeit, dies zu tun. Sie müssen eine Datei erstellen (was automatisch geschieht, wenn Sie eine Datei zum Schreiben mit ofstream
öffnen) und dann remove
erneut, wenn Sie mit der Datei fertig sind (mit der C-Bibliotheksfunktion remove). Sie können jedoch tmpnam
verwenden, um einen Namen für die Datei zu generieren:
Es gibt keine. Beachten Sie, dass mkstemp
weder Teil von C (mindestens C99) noch von C ++ - Standard ist - es ist ein POSIX-Zusatz. C ++ hat nur tmpfile
und tmpnam
im C-Bibliotheksteil.
Boost.IOStreams bietet jedoch eine file_descriptor
Geräteklasse, die zum Erstellen eines Streams verwendet werden kann, der mit mkstemp
arbeitet.
Wenn ich mich richtig erinnere, sollte es so aussehen:
%Vor%Wenn Sie eine portable C ++ - Lösung wünschen, sollten Sie im boost :: Dateisystem unique_path verwenden :
Die Funktion unique_path generiert einen Pfadnamen, der zum Erstellen geeignet ist temporäre Dateien, einschließlich Verzeichnisse. Der Name basiert auf einem Modell Das Zeichen "Prozentzeichen" wird verwendet, um die Ersetzung durch "a" anzugeben zufällige hexadezimale Ziffer. [Anmerkung: Je mehr Bits der Zufälligkeit in der generierter Pfadname, desto geringer ist die Wahrscheinlichkeit einer vorherigen Existenz oder eines früheren Seins erraten. Jede hexadezimale Ersatzziffer im Modell addiert vier Bits der Zufälligkeit. Das Standardmodell stellt somit 64 Bits zur Verfügung Zufälligkeit. Dies ist für die meisten Anwendungen ausreichend.