我已经下载了实现BoW(Bag of Words)的代码,我在这行中收到错误:
float label=atof(entryPath.filename().c_str());
它说:“const boost :: filesystem :: path :: value_type *”类型的参数与“const char *”类型的参数不兼容
我一直在搜索一下,我发现这种字符串与char之间的转换存在问题,但我找不到与浮点转换相关的任何内容。
我也看到了string
和c_str
之间的差异,我认为错误发生在atof
,因为我认为只能转换string
和不是c_str
。这可能是错误吗?
此外,我是升级库中的新手,我不知道如何应对这种情况。
非常感谢,对不起我的英语
答案 0 :(得分:5)
如果您使用boost::filesystem
,为什么不使用boost::lexical_cast
?
如果您使用的是Windows,则atof
将无法使用path.c_str()
,因为value_type
为wchar_t
。
float label = boost::lexical_cast<float>(entryPath.filename().string());
将完美运作。
或者您只需使用
float label = atof(entryPath.filename().string().c_str());