Namespaces
Variants

std:: fgetws

From cppreference.net
< cpp ‎ | io ‎ | c
Definido en el encabezado <cwchar>
wchar_t * fgetws ( wchar_t * str, int count, std:: FILE * stream ) ;

Lee como máximo count - 1 caracteres anchos del flujo de archivo dado y los almacena en str . La cadena ancha producida siempre termina en nulo. El análisis se detiene si ocurre el fin de archivo o se encuentra un carácter ancho de nueva línea, en cuyo caso str contendrá ese carácter ancho de nueva línea.

Contenidos

Parámetros

str - cadena ancha donde leer los caracteres
count - la longitud de str
stream - flujo de archivo de donde leer los datos

Valor de retorno

str en caso de éxito, un puntero nulo en caso de error.

Ejemplo

#include <array>
#include <clocale>
#include <cstdio>
#include <cstdlib>
#include <cwchar>
#include <cwctype>
#include <iomanip>
#include <iostream>
#include <span>
#include <string>
void dump(std::span<const wchar_t> sp, std::size_t width = 14)
{
    for (wchar_t wc : sp)
        std::wcout << (std::iswprint(wc) ? wc : L'.');
    std::wcout << std::wstring(width > sp.size() ? width - sp.size() : 1, L' ')
               << std::hex << std::uppercase << std::setfill(L'0');
    for (wchar_t wc : sp)
        std::wcout << std::setw(sizeof wc) << static_cast<unsigned>(wc) << ' ';
    std::wcout << '\n';
}
int main()
{
    // Crear archivo temporal que contiene caracteres anchos
    std::setlocale(LC_ALL, "en_US.utf8");
    std::FILE* tmpf = std::tmpfile();
    for (const wchar_t* text : {
        L"Tétraèdre"    L"\n",
        L"Cube"         L"\n",
        L"Octaèdre"     L"\n",
        L"Icosaèdre"    L"\n",
        L"Dodécaèdre"   L"\n"
        })
        if (int rc = std::fputws(text, tmpf); rc == EOF)
        {
            std::perror("fputws()"); // POSIX requiere que errno esté configurado
            return EXIT_FAILURE;
        }
    std::rewind(tmpf);
    std::array<wchar_t, 12> buf;
    while (std::fgetws(buf.data(), buf.size(), tmpf) != nullptr)
        dump(std::span(buf.data(), buf.size()));
    return EXIT_SUCCESS;
}

Salida posible:

Tétraèdre...  0054 00E9 0074 0072 0061 00E8 0064 0072 0065 000A 0000 0000 
Cube..dre...  0043 0075 0062 0065 000A 0000 0064 0072 0065 000A 0000 0000 
Octaèdre....  004F 0063 0074 0061 00E8 0064 0072 0065 000A 0000 0000 0000 
Icosaèdre...  0049 0063 006F 0073 0061 00E8 0064 0072 0065 000A 0000 0000 
Dodécaèdre..  0044 006F 0064 00E9 0063 0061 00E8 0064 0072 0065 000A 0000

Véase también

lee entrada de caracteres anchos formateada desde stdin , un flujo de archivo o un búfer
(función)
obtiene un carácter ancho de un flujo de archivo
(función)
escribe una cadena ancha a un flujo de archivo
(función)
Documentación C para fgetws