【问题标题】:issue with <libgen.h> and using basename<libgen.h> 和使用 basename 的问题
【发布时间】:2019-06-17 18:52:11
【问题描述】:

无法让 basename 在 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

【问题讨论】:

    标签: c++11


    【解决方案1】:

    basename's 参数是char*,所以这个函数可能会修改传递的数据。您不能将 const char* - 指向仅读取数据的指针传递给 basename,因为它会让 basename 修改 const 数据 - 不允许。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-19
      • 1970-01-01
      • 2013-07-24
      • 2016-02-03
      • 1970-01-01
      • 1970-01-01
      • 2016-08-09
      • 2023-03-26
      相关资源
      最近更新 更多