名稱空間
變體
操作

std::tmpnam

來自 cppreference.com
< cpp‎ | io‎ | c
 
 
 
 
定義於標頭檔案 <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 文件 for tmpnam