Если вы посмотрите на то же самое, что называется перечисление , оно скажет, что нужно делать, если вы вставляете или обновляете строки:
Возможно это поможет
FILE * tmpfile ( void );
http://www.cplusplus.com/reference/clibrary/cstdio/tmpfile/
Открыть временный файл
Создает временный двоичный файл , открыто для обновления (режим wb + - см. fopen для подробности). Имя файла гарантировано отличаться от любого другого существующий файл. Временный файл созданный автоматически удаляется, когда поток закрыт (fclose) или когда программа завершается нормально.
См. также
char * tmpnam ( char * str );
Сгенерировать временное имя файла
Строка, содержащая имя файла отличается от любого существующего файла генерируется. Эта строка может использоваться для создать временный файл без перезапись любого другого существующего файла.
Вот полный пример:
#include <unistd.h>
int main(void) {
char filename[] = "/tmp/mytemp.XXXXXX"; // template for our file.
int fd = mkstemp(filename); // Creates and opens a new temp file r/w.
// Xs are replaced with a unique number.
if (fd == -1) return 1; // Check we managed to open the file.
write(fd, "abc", 4); // note 4 bytes total: abc terminating '\0'
/* ...
do whatever else you want.
... */
close(fd);
unlink(filename); // Delete the temporary file.
}
Если вы знаете имя файла, который хотите создать (и уверены, что он еще не существует), вы, очевидно, можете просто использовать open
, чтобы открыть файл.
tmpnam
и tmpfile
, вероятно, следует избегать, так как они могут пострадать от состояния гонки - подробности см. В man tmpfile (3)
.
Если вам нужен именованный файл (например, чтобы вы могли передать имя другому процессу, например компилятору или редактору), зарегистрируйте функцию очистки, которая удаляет файл с помощью atexit ()
. Вы можете использовать C ++
или C FILE *
(
) для создания файла. Не полностью стандартная, но широко доступная функция mkstemp ()
создает файл и сообщает вам его имя, а также возвращает дескриптор файла (третий механизм ввода-вывода); вы можете использовать функцию fdopen ()
для преобразования дескриптора файла в ФАЙЛ *
.
Если вам не нужен именованный файл, используйте ФАЙЛ в стиле C. *
в порядке, затем посмотрите tmpfile ()
, как предлагает @Tom.
Интересно, почему большая часть вы, ребята, показали ему способ C, а не способ C ++.
Вот fstream .
Попробуйте это, удаление файла зависит от ОС, но вы можете использовать boost.filesystem , чтобы упростить себе задачу.
Что ж, если вы успешно создали временный файл, вы можете использовать функцию удаления, чтобы удалить его.
Функция объявлена в stdio.h -
#include <stdio.h>
int remove(const char *pathname);
Например , если вы хотите удалить файл с именем myfile.txt, код будет
#include<stdio.h>
int main()
{
if(remove("myfile.txt") == -1)
{
fprintf(stderr,"Remove failed");
exit(EXIT_FAILURE);
}
exit(EXIT_SUCCESS);
}
Я надеюсь, что к настоящему времени вы уже знаете, как создать временный файл, поэтому это должно решить ваш запрос. Надеюсь, это поможет.
Это может быть немного не по теме, потому что автор хотел создать tmp.txt и удалить его после использования, но это тривиально - вы можете просто открыть () и удалить его (используя boost :: filesystem of курс).
mkstemp () основан на UNIX. В Windows вы используете GetTempFileName () и GetTempPath () для создания пути к временному файлу. Пример кода из MSDN:
http://msdn.microsoft.com/en-us/library/aa363875%28VS.85%29.aspx