float conversion c++ parsing int stdstring

c++ - conversion - string to int c#



¿Cómo se convierte una cadena de C++ a un int? (8)

He usado algo como lo siguiente en código C ++ antes:

#include <sstream> int main() { char* str = "1234"; std::stringstream s_str( str ); int i; s_str >> i; }

Posible duplicado:
Cómo analizar una cadena a un int en C ++?

¿Cómo se convierte una cadena de C ++ a un int?

Supongamos que espera que la cadena tenga números reales ("1", "345", "38944", por ejemplo).

Además, asumamos que no tiene impulso, y realmente quiere hacerlo de la manera C ++, no la vieja forma de C.


Permítanme agregar mi voto para boost :: lexical_cast

#include <boost/lexical_cast.hpp> int val = boost::lexical_cast<int>(strval) ;

bad_lexical_cast en error.



Tal vez estoy malinterpretando la pregunta, ¿por qué exactamente no quieres usar atoi ? No veo el punto de reinventar la rueda.

¿Me estoy perdiendo el punto aquí?



Use las transmisiones en C ++.

std::string plop("123"); std::stringstream str(plop); int x; str >> x; /* Lets not forget to error checking */ if (!str) { // The conversion failed. // Need to do something here. // Maybe throw an exception }

PD. Este principio básico es cómo funciona la biblioteca de impulso lexical_cast<> .

Mi método favorito es el impulso lexical_cast<>

#include <boost/lexical_cast.hpp> int x = boost::lexical_cast<int>("123");

Proporciona un método para convertir entre una cadena y formatos numéricos y viceversa. Debajo, utiliza una secuencia de cadenas para que todo lo que se pueda agrupar en una secuencia y luego desasignar de una secuencia (Eche un vistazo a los operadores >> y <<).


en "stdapi.h"

StrToInt

Esta función te dice el resultado y cuántos personajes participaron en la conversión.


#include <sstream> // st is input string int result; stringstream(st) >> result;