<libgen.h>并使用基本名称的问题

时间:2019-06-17 18:52:11

标签: c++11

由于无法获得在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个错误。

1 个答案:

答案 0 :(得分:0)

basename's参数为char*,因此此函数可以修改传递的数据。您无法将const char*-指向只读数据的指针传递到basename中,因为它会使basename修改const数据-不允许。

将输入创建为可修改的数组:

char ch[] = "asdfasdf/asdf.cpp";