C ++ wcstoul () - Biblioteca padrão C ++

A função wcstoul () em C ++ interpreta o conteúdo de uma string larga como um número integral não assinado da base especificada e retorna seu valor como um int longo não assinado.

A função wcstoul () também define um ponteiro para apontar para o primeiro caractere após o último caractere válido da string larga, se houver, caso contrário, o ponteiro é definido como nulo.

 Para a base 10 e a string larga L "29hi $" Parte numérica válida -> 29 Primeiro caractere após a parte numérica válida -> h

É definido no arquivo de cabeçalho.

wcstoul () prototype

 wcstoul longo sem sinal (const wchar_t * str, wchar_t ** str_end, int base);

A função wcstoul () recebe uma string larga str, um ponteiro para um caractere largo str_end e um valor inteiro - base como seu parâmetro.

Em seguida, ele interpreta o conteúdo da string larga como um número inteiro sem sinal da base fornecida e retorna um valor int longo sem sinal.

Parâmetros wcstoul ()

  • str: Uma string larga com a representação de um número inteiro sem sinal.
  • str_end: Um ponteiro para um ponteiro para um caractere largo. O valor de str_end é definido pela função para o próximo caractere em str após o último caractere válido. Este parâmetro também pode ser um ponteiro nulo, caso em que não é usado.
  • base: a base do valor integral. O conjunto de valores válidos para a base é (0, 2, 3,…, 35, 36).

wcstoul () Valor de retorno

A função wcstoul () retorna:

  • um valor int longo sem sinal (que é convertido da string).
  • 0 se nenhuma conversão válida puder ser realizada.

Exemplo 1: Como funciona a função wcstoul ()?

 #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 value; int base = 10; value = wcstoul(str1, &end, base); wcout << L"String value = " << str1 << endl; wcout << L"Unsigned Long Int value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstoul(str2, &end, base); wcout << L"String value = " << str2 << endl; wcout << L"Unsigned Long Int value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Quando você executa o programa, a saída será:

 Valor da string = 101aa ᚶ Valor Int longo sem sinal = 101 String final = aa ᚶ Valor da string = 59 Valor Int longo sem sinal = 59 String final =

Um valor inteiro válido para a função wcstoul () consiste em:

  • Um sinal opcional + ou -.
  • Um prefixo 0 para base octal (aplica-se apenas quando base = 8 ou 0).
  • Um prefixo 0x ou 0X para base hexadecimal (aplica-se apenas quando base = 16 ou 0).
  • Uma sequência de dígitos e / ou alfabetos (se a base for maior que 10).

Se o argumento contiver um sinal de menos (-) no início, o número negativo será convertido implicitamente em um tipo inteiro longo sem sinal que é um número positivo.

Os valores válidos para a base do parâmetro são (0, 2, 3,…, 35, 36). Um conjunto de dígitos válidos para a base 2 é (0, 1), para a base 3 é (0, 1, 2) e assim por diante. Para bases de 11 a 36, ​​os dígitos válidos incluem alfabetos.

O conjunto de dígitos válidos para a base 11 é (0, 1,…, 9, A, a), para a base 12 é (0, 1,…, 9, A, a, B, b) e assim por diante.

Exemplo 2: função wcstoul () com bases diferentes

 #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 Int with base-5 = " << wcstoul(str, &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Unsigned Long Int with base-12 = " << wcstoul(str, &end, 12) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Unsigned Long Int with base-36 = " << wcstoul(str, &end, 36) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

Quando você executa o programa, a saída será:

 311bzϾϿ para Unsigned Long Int com base-5 = 81 End String = bzϾϿ 311bzϾϿ para Unsigned Long Int com base-12 = 5351 End String = zϾϿ 311bzϾϿ para Unsigned Long Int com base-36 = 5087231 End String = ϾϿ

A função wcstoul () ignora todos os caracteres de espaço em branco iniciais até que o caractere de espaço em branco principal seja encontrado.

Em geral, um argumento inteiro válido para a função wcstoul () tem o seguinte formato:

 (espaço em branco) (- | +) (0 | 0x) (caracteres alfanuméricos)

Então, começando com este caractere, ele pega tantos caracteres quanto possível que forma uma representação de inteiro válida e os converte em um valor int longo sem sinal.

O que restar da string após o último caractere válido é ignorado e não tem efeito no resultado.

Exemplo 3: função wcstoul () para espaço em branco inicial e conversão invá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 Int with base-5 = " << wcstoul(L" 205u03e2x", &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"xu019cz201 to Unsigned Long Int with base-12 = " << wcstoul(L"xu019cz201", &end, 12) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

Quando você executa o programa, a saída será:

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

Se a base for 0, a base numérica é determinada automaticamente observando o formato da string. Se o prefixo for 0, a base é octal (8). Se o prefixo for 0x ou 0X, a base é hexadecimal (16), caso contrário, a base é decimal (10).

Exemplo 4: função wcstoul () com 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 Int with base-0 = " << wcstoul(L"0539u1e84", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"0xa31u05e2 to Unsigned Long Int with base-0 = " << wcstoul(L"0xa31u05e2", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"119xu060f to Unsigned Long Int with base-0 = " << wcstoul(L"119xu060f", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

Quando você executa o programa, a saída será:

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

Artigos interessantes...