fgetws
函数 <cwchar>
wchar_t* fgetws (wchar_t* ws, int num, FILE* stream);
从流中获得宽字符串
从流中读取宽字符,并将它们作为C宽字符串存储到ws中,直到(num-1)字符被读取,
或者到达换行符或文件结束符,以最先发生的为准。
换行宽字符会使fgetws停止读取,但该函数认为它是一个有效字符,
并将其包含在复制到ws的字符串中。
在复制到ws的字符之后会自动附加一个终止空字符。
文件中宽字符的外部表示形式是多字节字符:
这些字符的编译就像调用了
mbrtowc
一样(使用流的内部
mbstate_t对象)。
该函数的行为就像是使用
fgetwc从流中读取字符。
这相当于
fgets
(<
cstdio>)的宽字符版本。
☲ 参数
ws
指向wchar_t数组的指针,在该数组中填充读取的宽字符串。
num
要复制到ws中的最大字符数(包括终止空字符)。
stream
指向标识输入流的
FILE对象的指针。
Stdin可以用作从标准输入读取的参数。
流不区分字符模式(流上的第一次i/o操作确定它是单字符还是宽字符,
请参见
fwide)。
☉ 返回值
如果成功,则返回ws。
如果在试图读取字符时遇到文件结束符,则设置文件结束指示符(
feof)。
如果在读取任何字符之前发生这种情况,则返回的指针为空指针(并且ws的内容保持不变)。
如果发生读错误,则设置错误指示符(
ferror)并返回一个空指针(但ws所指向的内容可能已经更改)。
☣ 示例
/* 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个字符(以先到的为准),并在屏幕上打印它们。
🍄 另请参阅