无法将Boost路径迭代器转换为字符串

Cannot convert Boost path iterators to strings

本文关键字:转换 字符串 迭代器 路径 Boost      更新时间:2023-10-16

我正试图从nmdependent获得以下代码来编译

const std::string Bfd::packageName(const fs::path& path, int packageLevel)
{
  fs::path::iterator p = path.end();
  --p;
  for(int i = 0; i < packageLevel; ++i)
      --p;
  return *p;
}

然而,它正在生成以下编译器错误

/Users/nick/Software/nmdepend/src/Bfd.cpp: In static member function ‘static const std::string Bfd::packageName(const boost::filesystem3::path&, int)’:
/Users/nick/Software/nmdepend/src/Bfd.cpp:27: error: conversion from ‘const boost::filesystem3::path’ to non-scalar type ‘const std::string’ requested

应该如何修改此代码,以便返回字符串,同时维护使用迭代器尝试的操作?

path不能隐式转换为字符串。这应该是可行的:

return p->string();