使用 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());
我正在使用 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());