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

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, asummos que no tiene impulso, y realmente quiere hacerlo de la manera C ++, no la vieja forma de C.

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

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  int x = boost::lexical_cast("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 <<).

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

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

Preguntas frecuentes sobre C ++ Lite

[39.2] ¿Cómo convierto un std :: string a un número?

https://isocpp.org/wiki/faq/misc-technical-issues#convert-string-to-num

Permítanme agregar mi voto para boost :: lexical_cast

 #include  int val = boost::lexical_cast(strval) ; 

bad_lexical_cast en error.

Use atoi

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í?

en “stdapi.h”

 StrToInt 

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