函式
<cwchar>

fgetws

wchar_t* fgetws (wchar_t* ws, int num, FILE* stream);
從流中獲取寬字串
stream中讀取寬字元,並將它們儲存為C寬字串到ws,直到讀取了num-1個字元,或者遇到了換行符或檔案結束符(以先發生的為準)。

換行寬字元會使fgetws讀取停止,但該函式將其視為有效字元,幷包含在複製到ws的字串中。

在複製到ws的字元後,會自動新增一個終止空字元。

檔案中的寬字元的外部表示是多位元組字元:這些字元的轉換方式如同呼叫mbrtowc(使用stream的內部mbstate_t物件)。

該函式的操作方式如同使用 fgetwc 從流中讀取字元。

這是 fgets (<cstdio>) 的寬字元等效函式。

引數

ws
指向一個wchar_t讀取到的寬字串將被複制到這裡。
num
要複製到str的最大字元數(包括終止空字元)。
stream
指向標識輸入流的 FILE 物件的指標。
可以將標準輸入作為引數用於讀取。
該流不應有任何朝向,或應是寬字元朝向的(對流的第一個 I/O 操作決定了它是位元組朝向還是寬字元朝向,請參閱 fwide)。

返回值

成功時,函式返回 str
如果嘗試讀取字元時遇到檔案結束符,則會設定eof指示符feof)。如果這發生在任何字元可以讀取之前,則返回的指標是空指標(並且str的內容保持不變)。
如果發生讀取錯誤,會設定錯誤指示符 (ferror) 並返回一個空指標(但 str 指向的內容可能已改變)。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/* fgetws example */
#include <stdio.h>

int main()
{
   FILE * pFile;
   wchar_t mystring [100];

   pFile = fopen ("myfile.txt" , "r");
   if (pFile != NULL)
   {
     if ( fgetws (mystring , 100 , pFile) != NULL )
       fputws ( mystring, stdout );
     fclose (pFile);
   }
   return 0;
}

此示例讀取第一行myfile.txt或者前99個字元(以先發生的為準),並將它們列印到螢幕上。

另見