功能'stof'无法解决

Jos*_*tle 7 c++ mingw c++11

我以前遇到过这个问题,但找到了解决办法,只是这次解决办法不是一种选择.

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

如果在此页面上显示,我正在使用它:http://www.cplusplus.com/reference/string/stof/

这是我的包括:

#include <iostream>
#include <sstream>
#include <string>
using namespace std;
Run Code Online (Sandbox Code Playgroud)

那么,我做错了什么?如果一个解决方案不能被发现可能有人点我的另一种方式将字符串转换为浮动,并把它抛出一个异常,如果字符串是不兼容?

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

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

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

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

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

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

Cub*_*bic 11

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

例如,在g ++上,你必须使用-std=c++11选项(std=c++0xpre g ++ - 4.7)启用它.

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


Mic*_*fik 8

stof正确使用.这是gcc 4.7.2的MinGW构建中的已知错误.它应该固定为gcc 4.8.关于将字符串转换为数字的SO有很多例子.这是一个.您必须自己动手才能获得所需的异常行为,但这些示例应该可以帮助您入门.

  • [`boost :: lexical_cast`](http://www.boost.org/doc/libs/1_53_0/doc/html/boost_lexical_cast/synopsis.html#boost_lexical_cast.synopsis.lexical_cast)在失败时抛出异常. (2认同)