功能' stof'无法解决

时间:2013-02-15 20:56:16

标签: c++ c++11 mingw

之前我遇到过这个问题,但找到了解决方法,但这次只能解决这个问题。

我正在尝试使用'stof'功能,但我收到的错误是: 'stof'不是'std'的成员 函数'stof'无法解析

如果此页面上有节目,我会以完全正确的方式使用它:http://www.cplusplus.com/reference/string/stof/

这是我的包括:

#include <iostream>
#include <sstream>
#include <string>
using namespace std;

那么,我做错了什么?如果找不到解决方案,有人会指向另一种方法将字符串转换为float并且如果字符串不兼容则让它抛出异常吗?

编辑:使用示例程序和错误进行更新。

#include <iostream>
#include <sstream>
#include <string>
using namespace std;

int main()
{
   string testString = "";
   float testFloat = 0.0;
   testFloat = std::stof(testString);

   return 0;
}

我得到的错误是:

描述资源路径位置类型 'stof'不是'std'main.cpp / Assignment / src第33行的成员C / C ++问题

描述资源路径位置类型 函数'stof'无法解析main.cpp / Assignment / src第33行语义错误

2 个答案:

答案 0 :(得分:9)

stof是一个C ++ 11函数。确保您的编译器支持它(没有编译器完全支持C ++ 11,尽管现在大多数现代编译器都支持相当大的子集)。

例如,在g ++上,您必须使用-std=c++11选项(std=c++0x pre g ++ - 4.7)启用它。

如果您正在使用g ++,请检查您使用g++ -v的版本 - 如果它是旧版本(例如4.2),则c ++ 11功能将无法使用。

答案 1 :(得分:8)

您正确使用stof。这是gcc 4.7.2的MinGW构建中的known bug。它应该固定为gcc 4.8。关于将字符串转换为数字的SO有很多例子。这是one。你必须自己动手来获得你想要的异常行为,但这些例子应该让你开始。