Namespaces
Variants

std:: fgetws

From cppreference.net
< cpp ‎ | io ‎ | c
Défini dans l'en-tête <cwchar>
wchar_t * fgetws ( wchar_t * str, int count, std:: FILE * stream ) ;

Lit au plus count - 1 caractères larges depuis le flux de fichier donné et les stocke dans str . La chaîne large produite est toujours terminée par un caractère nul. L'analyse s'arrête si la fin de fichier est atteinte ou si un caractère large de nouvelle ligne est trouvé, auquel cas str contiendra ce caractère large de nouvelle ligne.

Table des matières

Paramètres

str - chaîne large dans laquelle lire les caractères
count - la longueur de str
stream - flux de fichier depuis lequel lire les données

Valeur de retour

str en cas de succès, un pointeur nul en cas d'erreur.

Exemple

#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()
{
    // Créer un fichier temporaire contenant des caractères larges
    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 requiert que errno soit défini
            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;
}

Sortie possible :

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

Voir aussi

lit une entrée de caractères larges formatée depuis stdin , un flux de fichier ou un tampon
(fonction)
obtient un caractère large depuis un flux de fichier
(fonction)
écrit une chaîne large vers un flux de fichier
(fonction)
Documentation C pour fgetws