# std::fgetws

From cppreference.com
< cpp‎ | io‎ | c

Defined in header `<cwchar>` |  |
wchar_t* fgetws( wchar_t* str, int count, std::FILE* stream ); |  |

Reads at most count - 1 wide characters from the given file stream and stores them in `str`. The produced wide string is always null-terminated. Parsing stops if end-of-file occurs or a newline wide character is found, in which case `str` will contain that wide newline character.

### Parameters

str | - | wide string to read the characters to
count | - | the length of `str`
stream | - | file stream to read the data from

### Return value

`str` on success, a null pointer on an error

### Example

Run this code

    #include <array>
    #include <clocale>
    #include <cstdio>
    #include <cstdlib>
    #include <cwchar>
    #include <iostream>

    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, 16> buf;
        while (std::fgetws(buf.data(), buf.size(), tmpf) != nullptr)
            std::wcout << L'"' << buf.data() << L'"' << L'\n';

        return EXIT_SUCCESS;
    }

Possible output:

    "Tétraèdre
    "
    "Cube
    "
    "Octaèdre
    "
    "Icosaèdre
    "
    "Dodécaèdre
    "

### See also

wscanf fwscanf swscanf | reads formatted wide character input from stdin, a file stream or a buffer (function)
fgetwc getwc | gets a wide character from a file stream (function)
fputws | writes a wide string to a file stream (function)

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/io/c/fgetws&oldid=145285"