kit*_*kun 3 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);
Run Code Online (Sandbox Code Playgroud)
规范回报
m_pathname=L"D:/Users\\me\\Documents\\tonkatsu\\data\\dominion\\dominion.db"
Run Code Online (Sandbox Code Playgroud)
如您所见,路径“D:/”的开头不正确。我也尝试调用 normalize() 没有成功
有没有办法解决这个问题?
尽管不是标准做法,但 Windows 上也接受正斜杠,这就是 boost 不强制转换的原因。
但是,某些库不接受正斜杠。[1]旨在通过将路径转换为系统的首选表示(即在 Windows 上使用反斜杠)来解决此类情况。boost::filesystem::path::make_preferred()
如下所述,虽然(大部分)Windows API 接受正斜杠,甚至是正斜杠和反斜杠的混合,但某些用户界面甚至在 Windows 中包含的应用程序中也不接受。