由于无法获得在C ++中工作的基本名称,我正在尝试仅使代码进行编译。
这是用于学校作业,我尝试查看是否是我的stdlib出现问题-但是,看来问题出在那
'''c ++
#include<iostream>
#include<cstring>
#include<libgen.h>
int main(){
const char *ch = "asdfasdf/asdf.cpp";
std::cout<<basename(ch) << std::endl;
std::cout<<dirname(strdup(ch)) << std::endl;
return 0;
}
我应该打印出ch的输出,但是,我收到了错误消息:
test.cpp:8:14:错误:没有匹配的函数可以调用“ basename” std :: cout <在此处输入代码 /usr/include/libgen.h:40:7:注意:候选函数不可行:第一个参数('const char *')将失去const限定符 char * basename(字符*); ^ 产生1个错误。
答案 0 :(得分:0)
basename's
参数为char*
,因此此函数可以修改传递的数据。您无法将const char*
-指向只读数据的指针传递到basename
中,因为它会使basename
修改const数据-不允许。
将输入创建为可修改的数组:
char ch[] = "asdfasdf/asdf.cpp";