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

A função vswprintf () em C ++ é usada para gravar uma string ampla formatada em um buffer de string ampla.

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

protótipo vswprintf ()

 int vswprintf (wchar_t * buffer, size_t buf_size, const wchar_t * formato, va_list vlist);

A função vswprintf () grava a string larga apontada por format no buffer da string larga. Um máximo de (buf_size-1)caracteres largos é gravado no buffer, seguido por um caractere largo nulo.

O formato de string largo pode conter especificadores de formato começando com%, que são substituídos pelos valores das variáveis ​​que são passadas como uma lista vlist.

Parâmetros vswprintf ()

  • buffer: Ponteiro para um buffer de string largo para escrever o resultado.
  • buf_size: Número máximo de caracteres largos a serem gravados, incluindo o caractere largo nulo de terminação.
  • formato: um ponteiro para uma string ampla terminada em nulo que é gravada no buffer. Consiste em caracteres junto com especificadores de formato opcionais começando com%. Os especificadores de formato são substituídos pelos valores das respectivas variáveis ​​que seguem o formato.
    O especificador de formato tem as seguintes partes:
    • Um sinal% principal
    • Sinalizadores: um ou mais sinalizadores opcionais que modificam o comportamento de conversão.
      • -: Justificar à esquerda o resultado dentro do campo. Por padrão, é justificado à direita.
      • +: O sinal do resultado é anexado ao início do valor, mesmo para resultados positivos.
      • Espaço: Se não houver sinal, um espaço é anexado ao início do resultado.
      • #: Uma forma alternativa de conversão é executada.
      • 0: é usado para números inteiros e em ponto flutuante. Os zeros à esquerda são usados ​​para preencher os números em vez de espaço.
    • Largura: Um valor opcional * ou inteiro usado para especificar o campo de largura mínima.
    • Precisão: um campo opcional que consiste em a. seguido por * ou inteiro ou nada para especificar a precisão.
    • Comprimento: um modificador de comprimento opcional que especifica o tamanho do argumento.
    • Especificador: um especificador de formato de conversão. Os especificadores de formato disponíveis são os seguintes:
    Especificadores de formato
    Especificador de formato Descrição
    % Imprime%
    c Escreve um único personagem
    s Escreve uma string de caracteres
    d ou i Converte um inteiro com sinal em representação decimal
    o Converte um inteiro sem sinal em representação octal
    X ou x Converte um inteiro sem sinal em representação hexadecimal
    você Converte um inteiro sem sinal em representação decimal
    F ou F Converte o número de ponto flutuante em representação decimal
    E ou e Converte o número de ponto flutuante em notação de expoente decimal
    A ou a Converte o número de ponto flutuante em expoente hexadecimal
    G ou g Converte o número de ponto flutuante em notação de expoente decimal ou decimal
    n Retorna o número de caracteres escritos até agora por esta chamada para a função. O resultado é escrito no valor apontado pelo argumento
    p Grava uma sequência de caracteres definida pela implementação definindo um ponteiro.

    Portanto, o formato geral do especificador de formato é:
     Especificador% (sinalizadores) (largura) (. precisão) (comprimento)
  • vlist: uma lista de argumentos contendo os dados a serem gravados.

vswprintf () Valor de retorno

  • Se for bem-sucedida, a função vswprintf () retorna o número de caracteres largos escritos, excluindo o caractere largo nulo de terminação.
  • Um valor negativo é retornado se ocorrer algum erro de codificação ou se o número de caracteres a serem gerados for igual ou maior que buf_size.

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

 #include #include #include void write(wchar_t* buffer, size_t buf_size, const wchar_t *fmt,… ) ( va_list args; va_start(args, fmt); vswprintf(buffer, buf_size, fmt, args); va_end(args); ) int main () ( wchar_t str() = L"u0684 u06b1 u06aa u06a3 u0684"; wchar_t buffer(50); setlocale(LC_ALL, "en_US.UTF-8"); write(buffer, 50, L"Arabic Letters: %ls", str); wprintf(L"%ls", buffer); return 0; )

Ao executar o programa, o seguinte será gravado em example.txt:

 Letras árabes: ڄ ڱ ڪ ڣ ڄ

Artigos interessantes...