función strtol() en C++ STL

La función strtol() es una función integrada en C++ STL que convierte el contenido de una string en un número entero de la base especificada y devuelve su valor como un int largo. Sintaxis :

strtol(s, &end, b)

Parámetros : la función acepta tres parámetros obligatorios que se describen a continuación:

  • s : especifica la string que tiene la representación de un número entero.
  • end : indica dónde se detuvo la conversión, se refiere a un objeto ya asignado de tipo char*. La función establece el valor del final en el siguiente carácter en s después del último carácter válido. También puede ser un puntero nulo, en cuyo caso no se utiliza.
  • b : especifica a la base del valor integral.

Valor devuelto : la función devuelve valor de dos tipos:

  • Si se produce una conversión válida, se devuelve un valor int largo.
  • Si no ocurre una conversión válida, se devuelve 0.

Los siguientes programas ilustran la función anterior. Programa 1

CPP

// C++ program to illustrate the
// strtol() function when decimal base
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    int b = 10;
    char s[] = "6010IG_2016p";
    char* end;
    long int n;
 
    n = strtol(s, &end, b);
    cout << "Number in  String = " << s << endl;
    cout << "Number in Long Int = " << n << endl;
    cout << "End String = " << end << endl
         << endl;
 
    // the pointer to invalid
    // characters can be null
    strcpy(s, "47");
    cout << "Number in  String = " << s << endl;
    n = strtol(s, &end, b);
    cout << "Number in Long Int = " << n << endl;
    if (*end) {
        cout << end;
    }
    else {
        cout << "Null pointer";
    }
    return 0;
}
Producción:

Number in  String = 6010IG_2016p
Number in Long Int = 6010
End String = IG_2016p

Number in  String = 47
Number in Long Int = 47
Null pointer

Programa 2

CPP

// C++ program to illustrate the
// strtol() function
#include <cstdlib>
#include <cstring>
#include <iostream>
using namespace std;
 
int main()
{
    char* end;
 
    cout << "489bc"
         << " to Long Int with base-4 = "
         << strtol("489bc", &end, 4) << endl;
    cout << "End String = " << end << endl;
 
    cout << "123s"
         << " to Long Int with base-11 = "
         << strtol("123s", &end, 11) << endl;
    cout << "End String = " << end << endl;
 
    cout << "56xyz"
         << " to Long Int with base-36 = "
         << strtol("56xyz", &end, 36) << endl;
}
Producción:

489bc to Long Int with base-4 = 0
End String = 489bc
123s to Long Int with base-11 = 146
End String = s
56xyz to Long Int with base-36 = 8722043

Programa 3

CPP

// C++ program to illustrate the
// strtol() function when base is 0
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main()
{
    char* end;
 
    // octal base
    cout << "312gfg"
         << " to Long Int with base-0 = "
         << strtol("312gfg", &end, 0) << endl;
    cout << "End String = " << end << endl
         << endl;
 
    // hexadecimal base
    cout << "0q15axtz"
         << " to Long Int with base-0 = "
         << strtol("0q15axtz", &end, 0) << endl;
    cout << "End String = " << end << endl
         << endl;
 
    // decimal base
    cout << "33ffn"
         << " to Long Int with base-0 = "
         << strtol("33ffn", &end, 0) << endl;
    cout << "End String = ";
 
    return 0;
}
Producción:

312gfg to Long Int with base-0 = 312
End String = gfg

0q15axtz to Long Int with base-0 = 0
End String = q15axtz

33ffn to Long Int with base-0 = 33
End String =

Programa 4 

CPP

// C++ program to illustrate the
// strtol() function for invalid
// conversions and leading whitespaces.
#include <cstdlib>
#include <iostream>
using namespace std;
 
int main()
{
    char* end;
 
    cout << "22abcd"
         << " to Long Int with base-6 = "
         << strtol("  22abcd", &end, 6) << endl;
    cout << "End String = " << end << endl
         << endl;
 
    cout << "114cd"
         << " to Long Int with base-2 = "
         << strtol("   114cd", &end, 2) << endl;
    cout << "End String = " << end << endl
         << endl;
 
    cout << "e10.79"
         << " to Long Int with base-10 = "
         << strtol("e10.79", &end, 10) << endl;
 
    cout << "End String = " << end << endl
         << endl;
 
    return 0;
}
Producción:

22abcd to Long Int with base-6 = 14
End String = abcd

114cd to Long Int with base-2 = 3
End String = 4cd

e10.79 to Long Int with base-10 = 0
End String = e10.79

Publicación traducida automáticamente

Artículo escrito por IshwarGupta y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *