写在前面
本文的知识点主要涉及到 C++ 的_access()
函数和c_str()
函数。
函数介绍
int _access(const char *pathname, int mode);
【参数】
pathname
为文件路径或目录路径;
mode
为访问权限(在不同系统中可能用不能的宏定义重新定义),其值和含义如下所示:
00——只检查文件是否存在
02——写权限
04——读权限
06——读写权限
对应的还有_access的宽字符版本,用法相同。
【返回值】
如果文件具有指定的访问权限,则函数返回0
;
如果文件不存在或者不能访问指定的权限,则返回-1
.
c_str()
的原型如下3 :
const char*c_str() const;
函数介绍4 5 :
返回字符串地址,是一个C函数,返回类型const char*
,
c_str()
函数返回一个指向正规C字符串的指针常量, 内容与本string
串相同。这是为了与C语言兼容,因为C语言中没有string类型,所以必须通过string
类对象的成员函数c_str()
把string
对象转换成C中的字符串样式。
注意:一定要使用strcpy()函数等来操作方法c_str()返回的指针。
举个例子:
c_str() 以 char* 形式传回 string 内含字符串
如果一个函数要求char*参数,可以使用c_str()方法:
string s = "Hello World!";
printf("%s", s.c_str()); //输出 "Hello World!"
函数功能代码演示
#include<opencv2/opencv.hpp>
#include <corecrt_io.h>
int main() {
cv::String modelPath = "./template/";
cv::String higTemplate = modelPath + "00.png";
// c_str()函数将会在下面讲解
const char *pathname = higTemplate.c_str();
if (_access(pathname, 0) == -1) {
printf("The file does not exist!");
}
return 0;
}
这段代码的作用是,判断"./template/"
这个文件夹中是否存在"00.png"
这张图像,如果不存在,则会输出"The file does not exist!"
.
因为_access()
函数需要传入的是const char *
类型的参数,所以需要先使用c_str()
这个函数将string类型的变量转换为const char *
类型,然后再进行后续的操作。
至此,想必各位已经对C++ 的_access()
函数和c_str()
函数有了一个简单的了解,写到这里,差不多本文也就要结束了。如果我的这篇文章帮助到了你,那我也会感到很高兴,一个人能走多远,在于与谁同行。