【问题标题】:Strange characters in output using boost::filesystem library使用 boost::filesystem 库的输出中的奇怪字符
【发布时间】:2017-02-23 18:18:40
【问题描述】:

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

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

但输出是文件列表

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

**0 ^]  ^?** 

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

【问题讨论】:

  • 我正在尝试,但我无法猜测如何替换 x.path().filename().string() 以使其工作。
  • 哦,对不起,我原谅这种方式。它可以编译,但问题仍然存在 =)
  • 好的,现在试着给它一个 c_string 像这样:beg->path().filename().string().c_str()
  • 是的,现在它可以正常工作了。谢谢。

标签: c++ boost command-line-interface ncurses boost-filesystem


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-16
    • 1970-01-01
    • 2021-04-23
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多