从c_str()转换为float

时间:2013-06-18 11:03:39

标签: c++ boost

我已经下载了实现BoW(Bag of Words)的代码,我在这行中收到错误:

float label=atof(entryPath.filename().c_str());

它说:“const boost :: filesystem :: path :: value_type *”类型的参数与“const char *”类型的参数不兼容

我一直在搜索一下,我发现这种字符串与char之间的转换存在问题,但我找不到与浮点转换相关的任何内容。

我也看到了stringc_str之间的差异,我认为错误发生在atof,因为我认为只能转换string和不是c_str。这可能是错误吗?

此外,我是升级库中的新手,我不知道如何应对这种情况。

非常感谢,对不起我的英语

1 个答案:

答案 0 :(得分:5)

如果您使用boost::filesystem,为什么不使用boost::lexical_cast? 如果您使用的是Windows,则atof将无法使用path.c_str(),因为value_typewchar_t

float label = boost::lexical_cast<float>(entryPath.filename().string());

将完美运作。

或者您只需使用

float label = atof(entryPath.filename().string().c_str());