Pregunta La función 'stof' no se pudo resolver


Tuve este problema antes pero encontré una solución, solo que esta vez no es una opción.

Estoy tratando de usar la función 'stof' pero recibo errores que dicen: 'stof' no es un miembro de 'std' La función 'stof' no se pudo resolver

Lo estoy usando de la manera exacta si se muestra en esta página:http://www.cplusplus.com/reference/string/stof/

Y aquí están mis incluye:

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

Entonces, ¿qué estoy haciendo mal? Y si no se puede encontrar una solución, ¿podría alguien indicarme otra forma de convertir la cadena a flotar y hacer que lance una excepción si la cadena no es compatible?

EDIT: Actualización con programa de ejemplo y errores.

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

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

   return 0;
}

Los errores que obtengo son:

Descripción Tipo de ubicación de la ruta de recursos 'stof' no es un miembro de 'std' main.cpp / Assignment / src line 33 C / C ++ Problem

Descripción Tipo de ubicación de la ruta de recursos La función 'stof' no se pudo resolver main.cpp / Assignment / src line 33 Error semántico


5
2018-02-15 20:56


origen


Respuestas:


Estás usando stof correctamente. Esto es un error conocido en la compilación MinGW de gcc 4.7.2. Se debe arreglar para gcc 4.8. Hay numerosos ejemplos en SO para convertir cadenas en números. Aquí está uno. Tendrá que hacer su propio rollo para obtener el comportamiento de excepción que desea, pero los ejemplos deberían comenzar.


6
2018-02-15 21:38



stof Es una función de C ++ 11. Asegúrese de que su compilador lo admita (ningún compilador tiene soporte completo para C ++ 11 todavía, aunque la mayoría de los compiladores modernos ahora soportan un subconjunto bastante grande).

En g ++, por ejemplo, tienes que habilitarlo con el -std=c++11 opción (std=c++0x pre g ++ - 4.7).

Si está usando g ++, compruebe qué versión está usando con g++ -v - si es una versión antigua (como 4.2 por ejemplo) la funcionalidad c ++ 11 no estará disponible.


8
2018-02-15 21:00