日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

判断文件或文件夹(目录)是否存在 C/C++ win/linux通用

發布時間:2023/11/27 生活经验 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 判断文件或文件夹(目录)是否存在 C/C++ win/linux通用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、windows下使用_access()或linux下使用access()函數

windows下使用_access()函數

所在頭文件:<io.h>
函數原型:int _access(const char* _Filename, int _AccessMode);
_Filename:文件或文件夾(目錄)路徑,可為絕對路徑、相對路徑;
_AccessMode:指定判斷的模式,包含4種;
_AccessMode=00 表示只判斷是否存在
_AccessMode=02 表示文件是否可執行
_AccessMode=04 表示文件是否可寫
_AccessMode=06 表示文件是否可讀
函數返回值:如果指定的方式有效,則此函數返回0,否則返回-1。
示例:

#include <io.h>
#include <iostream>
using namespace std;
int main()
{char resPath[260]="./CamIntrinCalibRes.yml";if (_access(resPath, 0) == 0)printf("file exists!\n");if (_access(resPath, 2) == 0)printf("file can be executed!\n");if (_access(resPath, 4) == 0)printf("file can be written!\n");if (_access(resPath, 6) == 0)printf("file can be read!\n");system("pause");return 0;
}

輸出:

若在Windows下使用access()時,


程序報如下錯誤,

錯誤原因:
access()函數是符合POSIX標準的函數,在VS中這個標準已經過時,被ISO C++取代。在ISO C++標準下,該函數的名稱為_access()。
解決方法:
1. 使用錯誤提示的方法,將函數更換為_access();
2. 項目-屬性-C/C+±預處理器中加入“_CRT_NONSTDC_NO_WARNINGS”,保存后重新編譯項目即可

2. 在使用access()所在.cpp第一條語句位置加上 #define _CRT_NONSTDC_NO_WARNINGS,重新編譯即可,原理和2一樣。

linux下使用access()函數

頭文件:<unistd.h>
函數原型:int access(const char *pathname, int mode);
pathname:文件或文件夾(目錄)路徑,可為絕對路徑、相對路徑;
mode:指定判斷的模式,包含4種;
mode=F_OK 只判斷是否存在
mode=X_OK 判斷是否有執行權限
mode=W_OK 只判斷是否有寫權限
mode=R_OK 只判斷是否有讀權限
函數返回值:如果指定的方式有效,則此函數返回0,否則返回-1。
進行windows<->linux平臺移植時需要根據函數變化進行修改。

后續待補充

感謝各位朋友的:點贊、收藏和評論~

參考鏈接:
C語言中access/_access函數的使用
_CRT_NONSTDC…與_CRT_SECURE…
C/C++ 中判斷某一文件或目錄是否存在

總結

以上是生活随笔為你收集整理的判断文件或文件夹(目录)是否存在 C/C++ win/linux通用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。