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