函数
<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个字符(以先发生的为准),并将它们打印到屏幕上。

另见