table of contents
        
      
      
    - Tumbleweed 2024.07.05-1.3
 - Leap-16.0
 - Leap-15.6
 
| std::fgetws(3) | C++ Standard Libary | std::fgetws(3) | 
NAME¶
std::fgetws - std::fgetws
Synopsis¶
 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 <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;
  
   }
Possible output:¶
 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
See also¶
 wscanf reads formatted wide character input from stdin, a file
    stream or a buffer
  
   fwscanf (function)
  
   swscanf
  
   fgetwc gets a wide character from a file stream
  
   getwc (function)
  
   fputws writes a wide string to a file stream
  
   (function)
  
   C documentation for
  
   fgetws
| 2024.06.10 | http://cppreference.com |