[c++] 如何将boost路径类型转换为字符串?


Answers

我相信您需要做的不仅仅是将路径转换为字符串 - 您应该首先获取路径的规范版本 - 不带符号链接元素的绝对路径 - 并将其转换为字符串:

boost::filesystem::canonical(myPath).string();

PS - 我一直使用Boost进行编程很久,我无法在文档中轻松找到这些信息。

更新(2017年10月)

文档: boost::filesystem::canonical

但要注意的是,从C ++ 17开始,有std::filesystem ,带有canonical和更多。

Question

你好,我目前有一个程序,获取文件位置的完整路径,并将其放入类型为boost :: filesystem2 :: path

我已经查阅了如何做到这一点,并发现使用:

string result1 = boost::filesystem::basename (myPath)

将路径转换为字符串,但它只转换文件名(例如,如果路径是“C:\ name \ bobsAwesomeWordDoc.docx”,它只是返回“bobsAwesomeWordDoc”)。

我已经找到了如何将整个路径转换为字符串,但我不知道如何在我的程序中实现它。 我尝试了多种方式,但我收到了转换错误。

const std :: string&string():此例程返回路径初始化的字符串的副本,并根据路径语法规则进行格式化。

(在here找到)

我努力了:

string result1 = string& (myPath);

和其他一些变化。




调用myPath.generic_string()将执行您所需的操作。




Related



Tags

c++ c++   boost   path