std::tmpnam
來自 cppreference.com
定義於標頭檔案 <cstdio> |
||
char* tmpnam( char* filename ); |
||
建立一個不存在的唯一檔名,並將其儲存在由 filename 指向的字元字串中。此函式能夠生成最多 TMP_MAX 個唯一檔名,但其中一些或全部可能已被使用,因此不適合作為返回值。
std::tmpnam 修改靜態狀態,不保證執行緒安全。
目錄 |
[編輯] 引數
filename | - | 指向字元陣列的指標,該陣列至少能容納 L_tmpnam 位元組,用作結果緩衝區。如果傳入空指標,則返回指向內部靜態緩衝區的指標 |
[編輯] 返回值
如果 filename 不是空指標,則返回 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 << "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
[編輯] 參見
建立並開啟一個臨時檔案,該檔案將自動刪除 (函式) | |
(C++17) |
返回適合臨時檔案的目錄 (函式) |
C 文件 for tmpnam
|