亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

C++ getcwd如何有效使用

c++
小樊
81
2024-11-27 16:05:16
欄目: 編程語言

getcwd() 是一個 C++ 標準庫函數,用于獲取當前工作目錄的路徑

  1. 包含頭文件:首先,你需要包含 <unistd.h> 頭文件,因為 getcwd() 函數在這個頭文件中聲明。
#include <unistd.h>
#include <iostream>
#include <vector>
  1. 檢查返回值:getcwd() 函數返回一個指向字符數組的指針,該數組包含當前工作目錄的路徑。如果函數成功執行,它將返回一個非空指針。如果失敗,它將返回 nullptr。因此,你需要檢查返回值是否為 nullptr,并在這種情況下處理錯誤。

  2. 分配足夠的空間:getcwd() 函數返回的字符數組的大小取決于當前工作目錄的路徑長度。為了避免緩沖區溢出,你需要為返回的字符串分配足夠的空間。你可以使用 sysconf(_SC_PATH_MAX) 函數獲取路徑的最大長度。

#include <sys/sysconf.h>

size_t path_max = sysconf(_SC_PATH_MAX);
char *buffer = new char[path_max];
  1. 調用 getcwd():現在你可以調用 getcwd() 函數并將結果存儲在之前分配的緩沖區中。
if (getcwd(buffer, path_max) != nullptr) {
    std::cout << "Current working directory: " << buffer << std::endl;
} else {
    perror("getcwd() error");
    delete[] buffer;
    return 1;
}
  1. 釋放內存:最后,不要忘記釋放之前分配的緩沖區。
delete[] buffer;

將以上代碼片段組合在一起,完整的示例程序如下:

#include <unistd.h>
#include <iostream>
#include <vector>
#include <sys/sysconf.h>

int main() {
    size_t path_max = sysconf(_SC_PATH_MAX);
    char *buffer = new char[path_max];

    if (getcwd(buffer, path_max) != nullptr) {
        std::cout << "Current working directory: " << buffer << std::endl;
    } else {
        perror("getcwd() error");
        delete[] buffer;
        return 1;
    }

    delete[] buffer;
    return 0;
}

這個程序將輸出當前工作目錄的路徑。如果發生錯誤,它將輸出錯誤消息并返回非零值。

0
荆州市| 长泰县| 梅河口市| 凌云县| 南丹县| 米易县| 南澳县| 金湖县| 高阳县| 玛曲县| 汉寿县| 姚安县| 宁津县| 呈贡县| 河东区| 莲花县| 安陆市| 谢通门县| 延边| 凤山市| 白城市| 会东县| 宝兴县| 石棉县| 潢川县| 余干县| 鄢陵县| 土默特左旗| 江油市| 宜兴市| 德令哈市| 敦煌市| 南部县| 铜鼓县| 朝阳县| 历史| 天柱县| 阿拉善右旗| 汉阴县| 松溪县| 若羌县|