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.
| str | - | wide string to read the characters to |
| count | - | the length of str |
| stream | - | file stream to read the data from |
str on success, a null pointer on an error.
#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 "
reads formatted wide character input from stdin, a file stream or a buffer (function) |
|
| gets a wide character from a file stream (function) |
|
| writes a wide string to a file stream (function) |
|
C documentation for fgetws |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/io/c/fgetws