首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将boost路径类型转换为字符串?

如何将boost路径类型转换为字符串?
EN

Stack Overflow用户
提问于 2010-11-15 03:47:14
回答 6查看 90.9K关注 0票数 140

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

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

代码语言:javascript
复制
string result1 = boost::filesystem::basename (myPath)

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

我发现了以下关于如何将整个路径转换为字符串的方法,但我不知道如何在我的程序中实现它。我已经尝试了多种方法,但我得到了转换错误。

const std:: string & string( ):此例程返回用于初始化路径的字符串的副本,其格式符合路径语法规则。

(找到here)

我试过了:

代码语言:javascript
复制
string result1 = string& (myPath);

还有一些其他的变体。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-11-15 03:51:49

你只需要给myPath.string()打电话。

票数 186
EN

Stack Overflow用户

发布于 2012-06-07 21:47:10

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

代码语言:javascript
复制
boost::filesystem::canonical(myPath).string();

附注:我已经用Boost编程很久了,我在文档中找不到这些信息。

更新(2017年10月)

文档:boost::filesystem::canonical

但请注意,在C++17中有std::filesystemcanonical以及更多。

票数 16
EN

Stack Overflow用户

发布于 2012-07-05 12:36:02

这在wxWidgets中有效:(我知道我应该只使用wx实用程序,但这只是一个测试)

代码语言:javascript
复制
void WxWidgetsBoostTestFrame::OnTestBtnClick(wxCommandEvent& event)
{
    boost::filesystem::path currentPath;
    currentPath = boost::filesystem::current_path();
    std::string curDirString;
    curDirString = boost::filesystem::canonical(currentPath).string();
    wxString mystring(curDirString.c_str(), wxConvUTF8);
    wxMessageBox(mystring); // output:  C:/Users\client\Desktop...      
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4179322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档