std::fgetws
Von cppreference.com
| Definiert in Header <cwchar> |
||
| wchar_t* fgetws( wchar_t* str, int count, std::FILE* stream ); |
||
Liest höchstens count - 1 Wide-Zeichen aus dem gegebenen Datei-Stream und speichert sie in str. Der erzeugte Wide-String ist immer nullterminiert. Das Parsen stoppt, wenn das Dateiende erreicht wird oder ein Zeilenumbruch-Wide-Zeichen gefunden wird, in welchem Fall str dieses Zeilenumbruch-Wide-Zeichen enthält.
Inhalt |
[bearbeiten] Parameter
| str | - | Wide-String, in den die Zeichen gelesen werden sollen |
| zählt | - | die Länge von str |
| stream | - | Dateistream, aus dem die Daten gelesen werden sollen |
[bearbeiten] Rückgabewert
str im Erfolgsfall, ein Nullzeiger bei einem Fehler.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#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() { // Create temp file that contains wide characters 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 requires that errno is set 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
[bearbeiten] Siehe auch
| liest formatierte breite Zeichen-Eingabe von stdin, einem Dateistream oder einem Puffer (Funktion) | |
| liest ein Weitzeichen aus einem Dateistream (Funktion) | |
| schreibt einen Weitzeichenstring in einen Dateistream (Funktion) | |
| C-Dokumentation für fgetws
| |