Home C&C++函数库 c++ 语法 程序源码 Linux C库

getwc

函数   <cwchar>

wint_t getwc (FILE* stream);

从流中获得宽字符

返回指定流的内部位置指示器当前指向的宽字符。然后将内部位置指示器移动到下一个宽字符。
因为宽字符在外部文件中由多字节字符表示,该函数可能涉及从文件中读取几个字节, 这些字节被解释为单个字符,就好像mbrtowc 是用流的内部mbstate_t对象调用的。

如果读取的字节序列不能解释为有效的多字节字符(或者可用的字节太少,无法组成宽字符), 则该函数返回WEOF 并将EILSEQ设置为errno的值。

如果调用时流位于文件结束位置,则该函数返回WEOF, 并设置流的文件结束指示符(feof)。

如果发生读错误,该函数将返回WEOF 并设置流的错误指示符(ferror)。

Getwc和fgetwc是等价的,只是在某些库中,getwc可以作为宏实现。 有关直接从stdin读取的类似函数, 请参阅getwchar

这是等同于getc (<cstdio>)的宽字符版本。

☲  参数


stream
指向标识输入流的FILE对象的指针。
流不区分字符模式(流上的第一次i/o操作确定它是单字符还是宽字符, 请参见fwide)。

☉  返回值



如果成功,则返回读取的字符(转换为类型为wint_t的值)。
返回类型是wint_t, 以容纳表示失败的特殊值WEOF:
如果读取的字节序列不能解释为有效的宽字符,则该函数返回WEOF 并将errno设置为EILSEQ。
如果位置指示符位于文件结束位置,函数返回WEOF, 并设置流的eof指示符(feof)。
如果发生了读取错误,函数也会返回WEOF, 但是会设置它的错误指示符(ferror)。

☣  示例



/* getwc example */
#include <stdio.h>
#include <wchar.h>

int main ()
{
  FILE * pFile;
  wint_t wc;
  int n = 0;
  pFile=fopen ("myfile.txt","r");
  if (pFile!=NULL)
  {
    do {
      wc = getwc (pFile);
      if (wc == L'$') n++;
    } while (wc != WEOF);
    fclose (pFile);
    wprintf (L"The file contains %d dollar sign characters ($).\n",n);
  }
  return 0;
}

这个程序一个字符一个字符地读取名为myfile.txt的现有文件,并使用n变量计算该文件包含多少美元字符($)。

🍄  另请参阅



getc 从流中获取字符(function )
fputwc 向流中写入宽字符(function )
fwscanf 从流读取格式化的数据(function )

联系我们 免责声明 关于CandCplus 网站地图