使用 boost::filesystem 库输出的奇怪字符

Strange characters in output using boost::filesystem library

我正在使用 boost::filesystem 从 argv[1] 中创建指定位置的文件列表。这是我用来执行此操作的代码:

for(auto&& x : directory_iterator(dir))
{
    wprintw(win1, "%s\n", x.path().filename().string());
    wrefresh(win1);
}

但输出的是文件列表

**^P^_^G~] ^?**

**0 ^]  ^?** 

或其他类似的随机字符。 有什么问题?

wprintw 类似于 printf 用于打印,它接受格式字符串,后跟该格式字符串的参数。这些方法不是类型安全的,这就是代码首先编译的原因。它需要的是一个字符数组,std::string不能直接这样使用。相反,我们应该使用 c_str() 成员函数来获取一个:

wprintw(win1, "%s\n", x.path().filename().string().c_str());