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

A função ungetwc () em C ++ envia o caractere largo lido anteriormente de volta para o fluxo para que ele possa ser lido novamente.

A função ungetwc () é definida no arquivo de cabeçalho.

protótipo ungetwc ()

 wint_t ungetwc (wint_t ch, FILE * stream);

A função ungetwc () envia o caractere largo ch de volta ao buffer associado ao fluxo de arquivos, a menos que ch seja igual a WEOF. Se ch for igual a WEOF, a operação falha e não há alteração no fluxo.

As chamadas para ungetwc () podem falhar se for chamado mais de uma vez sem qualquer leitura ou operação de reposicionamento no meio.

Se uma chamada para ungetwc () for bem-sucedida, o sinalizador de status de final de arquivo feof é limpo.

Para o fluxo de texto e binário, uma chamada bem-sucedida para ungetwc modifica o indicador de posição do fluxo de uma maneira não especificada. Mas é garantido que depois que todos os caracteres empurrados forem recuperados com uma operação de leitura, o indicador de posição do fluxo será igual ao seu valor antes de chamar ungetwc ().

Parâmetros ungetwc ()

  • ch: O caractere largo a ser empurrado para trás.
  • stream: Fluxo de arquivo onde o caractere largo é empurrado para trás.

ungetwc () Valor de retorno

  • Em caso de sucesso, a função ungetwc () retorna o caractere ch.
  • Em caso de falha, WEOF é retornado sem alterar o fluxo.

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

 #include #include #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wint_t c; long value = 0; wchar_t str() = L"u0037u0031u0039u00b6u03ee"; FILE *fp = fopen("file.txt", "r+"); fputws(str,fp); rewind(fp); while(1) ( c = fgetwc(fp); if (iswdigit(c)) value = value*10 + c - L'0'; else break; ) ungetwc(c, fp); cout << "Value = " << value << endl; fclose(fp); return 0; )

Quando você executa o programa, uma possível saída será:

 Valor = 719

Artigos interessantes...