VS2012 中的 strtof() 在哪里?

Posted

技术标签:

【中文标题】VS2012 中的 strtof() 在哪里?【英文标题】:Where is strtof() in VS2012? 【发布时间】:2015-05-28 22:46:33 【问题描述】:

我几乎找不到这个函数在哪个库/头文件中,我看过很多人使用这个函数的例子,但没有结果...... 这些是我包含的所有内容:

#include "Console.h"
#include "Direct3D9.h"
#include <string>
#include <cerrno>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <math.h>
#include <cmath>
#include <stdio.h>      
#include <stdlib.h> 

但仍然出现 strtof,因为“错误命名空间“std”没有成员“strtof””

我正在尝试做的事情:

 flValue = std::strtof( vszArgs.at( 1 ).c_str( ), NULL );
 pConVar->Set( flValue );

【问题讨论】:

en.cppreference.com/w/c/string/byte/strtof 它仍然不是标准的一部分。它说它应该是 cstdlib 的一部分,但是打开文档时没有 strtof :/ 正如参考文献所述,您需要完全支持和检测您的 c 编译器的 C99 标准功能。 strtof 被 1999 年标准添加到 C 中,并被 2011 年标准添加到 C++ 中。只需改用strtof;它返回一个double 结果,可以很容易地转换为float。如有必要,您可以添加范围检查。或者您可能只想使用double 而不是float 你试过std::stof,C++ 版本吗?无论如何,您似乎有一个std::string,它直接将其作为参数(无需调用c_str())。 【参考方案1】:

Visual Studio 2012 没有实现strtof

Link to MSDN bug report,其中包含建议的解决方法。

【讨论】:

那么无论如何你都可以得到它们,也许是它如何工作的原始函数? 我找不到任何关于如何实现 strtof 的链接。 他们建议改用函数_atoldbl【参考方案2】:

使用 C++11 时,您可以在 cstdlib 中找到它。信息可以在这里轻松找到:http://www.cplusplus.com/reference/cstdlib/strtof/?kw=strtof

我的猜测是您没有使用 c++11 进行编译。

【讨论】:

我正在使用 Visual Studio 2012【参考方案3】:

1) 包含 stdlib.h

#include <stdlib.h>     /* strtof */

来自http://www.cplusplus.com/reference/cstdlib/strtof/

如果还是不行的话……

2) 确保您的编译器是 C++11 或更新版本

它是 C++11 的新功能,所以如果你有旧的编译器,它就无法工作。

如果还是不行的话……

3) 你的编译器可能不支持它

Visual C++ 2012 不完全支持 C++11 标准。请参阅 Visual Studio 错误"Missing strtof, strtold, strtoll, strtoull functions from stdlib.h"。

我们在 CRT 中还没有这些功能。我们将考虑将它们添加到 Visual C++ 的未来版本中。

【讨论】:

是的,但对我来说不在 cstdlib 中,例如,如果我打开 cstdlib 文档,它不存在,任何更改任何人都有它的原始功能?这些是我在 cstdlib 中唯一可用的 strto 函数: using _CSTD strtod;使用_CSTD strtol;使用 _CSTD strtoul; @Oskar 查看编辑。如果你没有看到它,那么你必须有一个比 C++11 更早的编译器 我用的是 Visual Studio 2012,还不够新吗? @OskarDahlberg “这还不够新吗?” 我们现在有 Visual Studio 2015。 2012年陈年,可以说是好老酒,没有任何新鲜的色调。顺便说一句,GCC 4.8 或更早版本也是如此。

以上是关于VS2012 中的 strtof() 在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

VS2008中的代码分析(FxCop)功能在哪里?

VS2010平台工具集在哪里?

VS 2015 中的数据库项目在哪里?

VS 2017 中的创建单元测试在哪里?

VS 2015 的 app 目录中的缓存文件在哪里?

VS 2008 中的 Visual C++ Redistributable Installer 在哪里?