Пространства имён
Варианты
Действия

std::tmpnam

Материал из cppreference.com
< cpp‎ | io‎ | c

 
 
Библиотека ввода/вывода
Манипуляторы ввода/вывода
Функции print(C++23)
Ввод/вывод в стиле C
Буферы
(устарело в C++98)
Потоки
Абстракции
Файловый ввод/вывод
Ввод/вывод строк
Ввод/вывод массивов
(устарело в C++98)
(устарело в C++98)
(устарело в C++98)
Синхронизированный вывод
Типы
Интерфейс категорий ошибок
(C++11)
 
Ввод/Вывод в стиле C
Типы и объекты
Функции
Доступ к файлам
Прямой ввод/вывод
Неформатированный ввод/вывод
Форматированный ввод
(C++11)(C++11)(C++11)    
(C++11)(C++11)(C++11)    
Форматированный вывод
Позиционирование файла
Обработка ошибок
Операции с файлами
tmpnam
 
Определено в заголовочном файле <cstdio>
char* tmpnam(char* filename );
Создает уникальное имя файла, который не назвать в настоящее время существующий файл и сохраняет его в строку символов, на которую указывает filename. Функция способна генерировать до TMP_MAX уникальных имен файлов, но все или некоторые из них, возможно, уже в использовании, и, следовательно, не подходящие значения возврата.
Оригинал:
Creates an unique filename that does not name a currently existing file, and stores it in the character string pointed to by filename. The function is capable of generating up to TMP_MAX of unique filenames, but some or all of them may already be in use, and thus not suitable return values.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

Содержание

[править]Параметры

filename
Указатель на массив символов, способных, владеющих не менее L_tmpnam байт, которые будут использоваться в качестве результата буфера. Если NULL передается указатель на внутренний статический буфер возвращается .
Оригинал:
pointer to the character array capable of holding at least L_tmpnam bytes, to be used as a result buffer. If NULL is passed, a pointer to an internal static buffer is returned.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

[править]Возвращаемое значение

filename если filename не было NULL. В противном случае указатель на внутренний статический буфер возвращается. Если нет подходящего файла может быть создан, NULL возвращается.
Оригинал:
filename if filename was not NULL. Otherwise a pointer to an internal static buffer is returned. If no suitable filename can be generated, NULL is returned.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

[править]Заметки

При вызове с нулевого указателя аргумента, эта функция изменяет глобальный объект. Если другой поток вызывает std::tmpnam с нулевого указателя аргумента в то же время, поведение не определено из-за расы данных.
Оригинал:
When called with null pointer argument, this function modifies a global object. If another thread calls std::tmpnam with null pointer argument at the same time, the behavior is undefined due to a data race.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Хотя имена порожденных std::tmpnam трудно догадаться, вполне возможно, что файл с таким именем будет создан другой процесс между моментом std::tmpnam возвращается и момент эта программа пытается использовать вернулся имя для создания файла. Стандартный std::tmpfile функции и функции POSIX mkstemp не имеют этой проблемы.
Оригинал:
Although the names generated by std::tmpnam are difficult to guess, it is possible that a file with that name is created by another process between the moment std::tmpnam returns and the moment this program attempts to use the returned name to create a file. The standard function std::tmpfile and the POSIX function mkstemp do not have this problem.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

[править]Пример

#include <iostream>#include <cstdio>#include <string>int main(){std::string name1 = std::tmpnam(nullptr);std::cout<<"temporary file name: "<< name1 <<'\n';   char name2[L_tmpnam];if(std::tmpnam(name2))std::cout<<"temporary file name: "<< name2 <<'\n';}

Возможный вывод:

temporary file name: /tmp/fileDjwifs temporary file name: /tmp/fileEv2bfW

[править]См. также

создает и открывает временный, автоматическое удаление файлов
Оригинал:
creates and opens a temporary, auto-removing file
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция)[править]
close