您好,我目前有一个程序,它获取文件位置的完整路径,并将其放入类型为: boost::filesystem2::path的变量中
我已经查找了如何做到这一点,并发现使用:
string result1 = boost::filesystem::basename (myPath)
将路径转换为字符串,但它只转换文件名(例如,如果路径是"C:\name\bobsAwesomeWordDoc.docx“,它只返回"bobsAwesomeWordDoc")。
我发现了以下关于如何将整个路径转换为字符串的方法,但我不知道如何在我的程序中实现它。我已经尝试了多种方法,但我得到了转换错误。
const std:: string & string( ):此例程返回用于初始化路径的字符串的副本,其格式符合路径语法规则。
(找到here)
我试过了:
string result1 = string& (myPath);
还有一些其他的变体。
发布于 2010-11-15 03:51:49
你只需要给myPath.string()
打电话。
发布于 2012-06-07 21:47:10
我认为您需要做的不仅仅是将路径转换为字符串-您应该首先获得路径的规范版本-没有符号链接元素的绝对路径-并将其转换为字符串:
boost::filesystem::canonical(myPath).string();
附注:我已经用Boost编程很久了,我在文档中找不到这些信息。
更新(2017年10月)
文档:boost::filesystem::canonical。
但请注意,在C++17中有std::filesystem、canonical以及更多。
发布于 2012-07-05 12:36:02
这在wxWidgets中有效:(我知道我应该只使用wx实用程序,但这只是一个测试)
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...
}
https://stackoverflow.com/questions/4179322
复制相似问题