Estoy usando VS 2008 para crear un proyecto de DLL C++ (no administrado) y necesito convertir un char * en un tipo largo. ¿Hay una manera fácil de hacerlo?cadena de conversión a long long
Gracias de antemano :)
Estoy usando VS 2008 para crear un proyecto de DLL C++ (no administrado) y necesito convertir un char * en un tipo largo. ¿Hay una manera fácil de hacerlo?cadena de conversión a long long
Gracias de antemano :)
Trate _atoi64.
Esto toma char*
y devuelve __int64
.
Atención al comprador: ¡atoi no es seguro ni ofrece comprobación de límites! – Alan
Sí, _atoi64 probablemente no sea una buena opción. Si está utilizando .NET Framework, ¿por qué no usar ToInt64 en una cadena en lugar de un char *? Si no, creo que strtol o equiv es la forma estándar actual de ir y es más seguro que atoi. –
boost :: lexical_Cast <> –
La forma más sencilla es utilizar el std :: stringstream (que es también el más typesafe ...)
std::stringstream sstr(mystr);
__int64 val;
sstr >> val;
Es posible que necesite para apuntar una aplicación de 64 bits para que esto funcione.
Debe usar 'std :: int64_t' en lugar de la extensión de lenguaje MSVC' __int64'. –
No creo que std :: int64_t esté disponible en VC++ 2008 – Alan
Ah, tienes razón. Mi error. –
Si está utilizando impulso, lexical_cast es el camino a seguir, en mi opinión.
long long ll = boost::lexical_cast<long long>(mystr)
Otra opción es usar stoll() que se encuentra dentro de la biblioteca de cadenas. Toma una cadena de C++.
long long ll = std::stoll(mystr);
parece que esta cuestión aparece cada semana más o menos: - | –