【发布时间】:2019-09-29 13:48:06
【问题描述】:
我将一些可执行文件的路径存储在 boost::filesystem::path 中。 当我尝试将它与像 create_directory 这样的标准增强功能一起使用时,我发现没有任何效果。 当我打印存储在 boost::filesystem::path 中的值时,我只得到第一个字符。
const std::string path("c:\\test\\file");
boost::filesystem::path p(path);
printf("%s\n", p.c_str());
我希望在控制台中看到“c:\test\file”,但只得到“c”。
在 Linux 上,此代码可以按预期完美运行。在 Windows 上,我有我描述的行为。问题的根源是什么?
ps。 boost 库版本是 1.70
【问题讨论】:
-
p.c_str()是 Windows 上的 Unicode 字符串吗? -
From documentation: "对于类似 Windows 的实现,包括 MinGW,
path::value_type是wchar_t。" -
你是对的,wprintf(L"%s\n", p.c_str());正确打印