转换为const char后,boost文件系统规范路径无效*

时间:2014-11-24 17:46:13

标签: c++ boost-filesystem

我正在尝试转换相对路径并将其转换为绝对路径以使用boost文件系统传递给SQLite。这应该适用于Windows和Linux

    boost::filesystem::path path("../../data/dominion");
    boost::filesystem::path file("dominion.db");
    boost::filesystem::path canonical = boost::filesystem::canonical(dataPath / file);

规范回报

   m_pathname=L"D:/Users\\me\\Documents\\tonkatsu\\data\\dominion\\dominion.db" 

你可以看到路径的开头" D:/"是不正确的。我也尝试在它上面调用normalize()而没有成功

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:4)

尽管不是标准做法,但Windows上也接受了正斜杠,这就是为什么提升不会强制转换。

但是,有些图书馆不接受正斜杠。 boost::filesystem::path::make_preferred() [1] 旨在通过将路径转换为系统的首选表示(即在Windows上使用反斜杠)来解决此类情况。

[1] This older reference makes that behaviour more obvious

如下所述,虽然(大多数)Windows API接受正斜杠,甚至是正斜杠和反斜杠的混合,但某些用户界面甚至在Windows中包含的应用程序上都没有。

相关问题