C ++ wcstoull () - Biblioteca estándar de C ++

La función wcstoull () en C ++ interpreta el contenido de una cadena ancha como un número entero sin signo de la base especificada y devuelve su valor como un entero largo sin signo.

La función wcstoull () también establece un puntero para apuntar al primer carácter después del último carácter válido de la cadena ancha si lo hay, de lo contrario, el puntero se establece en nulo.

 Para base 10 y la cadena ancha L "29hi $" Parte numérica válida -> 29 Primer carácter después de la parte numérica válida -> h

Está definido en el archivo de encabezado.

prototipo de wcstoull ()

 unsigned long wcstoull (const wchar_t * str, wchar_t ** str_end, int base);

La función wcstoull () toma una cadena ancha str, un puntero al carácter ancho str_end y un valor entero - base como parámetro.

Luego interpreta el contenido de la cadena ancha como un número entero sin signo de la base dada y devuelve un valor int largo largo sin signo.

Parámetros de wcstoull ()

  • str: Una cadena ancha que tiene la representación de un número entero sin signo.
  • str_end: un puntero a un puntero a un carácter ancho. El valor de str_end lo establece la función en el siguiente carácter de str después del último carácter válido. Este parámetro también puede ser un puntero nulo, en cuyo caso no se utiliza.
  • base: La base del valor integral. El conjunto de valores válidos para la base es (0, 2, 3,…, 35, 36).

wcstoull () Valor de retorno

La función wcstoull () devuelve:

  • un valor int long long sin firmar (que se convierte de la cadena).
  • 0 si no se pudo realizar una conversión válida.

Ejemplo 1: ¿Cómo funciona la función wcstoull ()?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str1() = L"101aau16b6"; wchar_t str2() = L"59"; wchar_t *end; unsigned long long value; int base = 10; value = wcstoull(str1, &end, base); wcout << L"String value = " << str1 << endl; wcout << L"Unsigned Long Long Int value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstoull(str2, &end, base); wcout << L"String value = " << str2 << endl; wcout << L"Unsigned Long Long Int value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Cuando ejecute el programa, la salida será:

 Valor de cadena = 101aa ᚶ Valor largo largo sin signo int = 101 Cadena final = aa ᚶ Valor de cadena = 59 Valor largo largo sin signo int = 59 Cadena final =

Un valor entero válido para la función wcstoull () consta de:

  • Un signo + o - opcional.
  • Un prefijo 0 para base octal (se aplica solo cuando base = 8 o 0).
  • Un prefijo 0x o 0X para base hexadecimal (se aplica solo cuando base = 16 o 0).
  • Una secuencia de dígitos y / o alfabetos (si la base es mayor que 10).

Si el argumento contiene un signo menos (-) al principio, el número negativo se convierte implícitamente en un tipo int long long sin signo que es un número positivo.

Los valores válidos para la base de parámetros son (0, 2, 3,…, 35, 36). Un conjunto de dígitos válidos para la base 2 es (0, 1), para la base 3 es (0, 1, 2) y así sucesivamente. Para las bases que comienzan del 11 al 36, los dígitos válidos incluyen alfabetos.

El conjunto de dígitos válidos para la base 11 es (0, 1,…, 9, A, a), para la base 12 es (0, 1,…, 9, A, a, B, b) y así sucesivamente.

Ejemplo 2: función wcstoull () con diferentes bases

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t *end; wchar_t str() = L"311bzu03feu03ff"; wcout << str << L" to Unsigned Long Long Int with base-5 = " << wcstoull(str, &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Unsigned Long Long Int with base-12 = " << wcstoull(str, &end, 12) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Unsigned Long Long Int with base-36 = " << wcstoull(str, &end, 36) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

Cuando ejecute el programa, la salida será:

 311bzϾϿ a Unsigned Long Long Int con base-5 = 81 End String = bzϾϿ 311bzϾϿ to Unsigned Long Long Int con base-12 = 5351 End String = zϾϿ 311bzϾϿ a Unsigned Long Long Int con base-36 = 5087231 End String = ϾϿ

La función wcstoull () ignora todos los espacios en blanco iniciales hasta que se encuentra el carácter primario que no es un espacio en blanco.

En general, un argumento entero válido para la función wcstoull () tiene la siguiente forma:

 (espacio en blanco) (- | +) (0 | 0x) (caracteres alfanuméricos)

Luego, a partir de este carácter, toma tantos caracteres como sea posible que forman una representación entera válida y los convierte en un valor int largo sin signo. Lo que quede de la cadena después del último carácter válido se ignora y no tiene ningún efecto en el resultado.

Ejemplo 3: función wcstoull () para espacios en blanco iniciales y conversión no válida

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t *end; wcout << L" 205u03e2x to Unsigned Long Long Int with base-5 = " << wcstoull(L" 205u03e2x", &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"xu019cz201 to Unsigned Long Long Int with base-12 = " << wcstoull(L"xu019cz201", &end, 12) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

Cuando ejecute el programa, la salida será:

 205Ϣx a Unsigned Long Long Int con base-5 = 10 End String = 5Ϣx xƜz201 a Unsigned Long Long Int con base-12 = 0 End String = xƜz201

Si la base es 0, la base numérica se determina automáticamente al observar el formato de la cadena. Si el prefijo es 0, la base es octal (8). Si el prefijo es 0x o 0X, la base es hexadecimal (16); de lo contrario, la base es decimal (10).

Ejemplo 4: función wcstoull () con base 0

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t *end; wcout << L"0539u1e84 to Unsigned Long Long Int with base-0 = " << wcstoull(L"0539u1e84", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"0xa31u05e2 to Unsigned Long Long Int with base-0 = " << wcstoull(L"0xa31u05e2", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"119xu060f to Unsigned Long Long Int with base-0 = " << wcstoull(L"119xu060f", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

Cuando ejecute el programa, la salida será:

 0539Ẅ a Unsigned Long Long Int con base-0 = 43 End String = 9Ẅ 0xa31 ע a Unsigned Long Long Int con base-0 = 2609 End String = ע 119x ؏ a Unsigned Long Long Int con base-0 = 119 End String = x ؏

Articulos interesantes...