Namespaces
Variants

std:: fgetws

From cppreference.net
< cpp ‎ | io ‎ | c
Definiert in Header <cwchar>
wchar_t * fgetws ( wchar_t * str, int count, std:: FILE * stream ) ;

Liest maximal count - 1 Breitzeichen aus dem gegebenen Dateistrom und speichert sie in str . Die erzeugte Breitzeichenkette ist immer nullterminiert. Das Parsen stoppt, wenn Dateiende auftritt oder ein Breitzeichen für Zeilenumbruch gefunden wird, in welchem Fall str dieses Breitzeichen für Zeilenumbruch enthalten wird.

Inhaltsverzeichnis

Parameter

str - Wide-String, in den die Zeichen gelesen werden
count - die Länge von str
stream - Dateistream, aus dem die Daten gelesen werden

Rückgabewert

str bei Erfolg, ein Nullzeiger bei einem Fehler.

Beispiel

#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()
{
    // Temporäre Datei mit Breitzeichen erstellen
    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 erfordert, dass errno gesetzt wird
            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;
}

Mögliche Ausgabe:

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

Siehe auch

liest formatierten Breitzeichen-Input von stdin , einem Dateistream oder einem Buffer
(Funktion)
liest ein Breitzeichen aus einem Dateistream
(Funktion)
schreibt eine Breitzeichenkette in einen Dateistream
(Funktion)
C-Dokumentation für fgetws