std:: tmpnam
| I/O manipulators | ||||
| Print functions (C++23) | ||||
| C-style I/O | ||||
| Buffers | ||||
|
(C++23)
|
||||
|
(
C++98/26*
)
|
||||
|
(C++20)
|
||||
| Streams | ||||
| Abstractions | ||||
| File I/O | ||||
| String I/O | ||||
| Array I/O | ||||
|
(C++23)
|
||||
|
(C++23)
|
||||
|
(C++23)
|
||||
|
(
C++98/26*
)
|
||||
|
(
C++98/26*
)
|
||||
|
(
C++98/26*
)
|
||||
| Synchronized Output | ||||
|
(C++20)
|
||||
| Types | ||||
| Error category interface | ||||
|
(C++11)
|
||||
|
(C++11)
|
| Types and objects | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Functions | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
定义于头文件
<cstdio>
|
||
|
char
*
tmpnam
(
char
*
filename
)
;
|
||
创建一个不指向当前已存在文件的唯一文件名,并将其存储到 filename 所指向的字符串中。该函数能够生成最多 TMP_MAX 个唯一文件名,但其中部分或全部可能已被使用,因此不适合作为返回值。
std::tmpnam 会修改静态状态且不保证线程安全。
目录 |
参数
| filename | - | 指向至少能容纳 L_tmpnam 字节的字符数组的指针,用作结果缓冲区。如果传入空指针,则返回指向内部静态缓冲区的指针 |
返回值
filename 如果 filename 不是空指针。否则返回指向内部静态缓冲区的指针。如果无法生成合适的文件名,则返回空指针。
注释
尽管由
std::tmpnam
生成的名称难以猜测,但在
std::tmpnam
返回结果与本程序尝试使用该名称创建文件的时间间隔内,仍可能存在其他进程创建同名文件的情况。标准函数
std::tmpfile
和 POSIX 函数
mkstemp
不存在此问题(若仅使用标准 C 库创建唯一目录,仍需要借助
tmpnam
实现)。
POSIX 系统额外定义了名称相似的函数
tempnam
,该函数支持选择目录(默认使用可选定义的宏
P_tmpdir
)。
示例
#include <cstdio> #include <iostream> #include <string> int main() { std::string name1 = std::tmpnam(nullptr); std::cout << "临时文件名: " << name1 << '\n'; char name2[L_tmpnam]; if (std::tmpnam(name2)) std::cout << "临时文件名: " << name2 << '\n'; }
可能的输出:
临时文件名: /tmp/fileDjwifs 临时文件名: /tmp/fileEv2bfW
参见
|
创建并打开一个临时自动删除文件
(函数) |
|
|
(C++17)
|
返回适用于临时文件的目录
(函数) |
|
C 文档
关于
tmpnam
|
|