7

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

我正在尝试使用 'stof' 函数,但我收到错误消息:'stof' is not a member of 'std' Function 'stof' could not besolved

如果在此页面上显示,我会以确切的方式使用它:http ://www.cplusplus.com/reference/string/stof/

这是我的包括:

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

那么,我做错了什么?如果找不到解决方案,是否有人可以指出另一种将字符串转换为浮点数的方法,如果字符串不兼容,它会抛出异常吗?

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

#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 行语义错误

4

2 回答 2

11

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

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

如果您使用的是 g++,请检查您使用的是哪个版本g++ -v- 如果它是旧版本(例如 4.2),c++11 功能将不可用。

于 2013-02-15T21:00:00.970 回答
8

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

于 2013-02-15T21:38:24.177 回答