函数
<cwchar>

fwide

int fwide (FILE* stream, int mode);
流的定向
确定 stream 的定向,如果它还没有已建立的定向,则可以根据 mode 的值来设置。

打开时,流没有定向(包括 stdinstdoutstderr)。但是对其中一个执行的第一个 I/O 操作会自动设置其定向:如果是面向字节的函数(在 <cstdio> 中定义),则流变为面向字节;如果是面向宽字符的函数(在 <cwchar> 中定义),则流变为面向宽字符

通过调用此函数,可以在任何 I/O 操作之前显式建立定向。在已经具有已建立的定向的 stream 上调用此函数不能改变它(只有在调用 freopen 后,具有已建立的定向的流才能更改它)。

可以通过将 mode 设为零来使用此函数来获取流的当前定向。

参数

stream
FILE 对象指针,用于标识一个流。
mode
可以指定一个定向
  • 零的 mode 不会改变流的定向。
  • 大于零的 mode 会使流面向宽字符
  • 小于零的 mode 会使流面向字节

返回值

该函数根据调用后的流定向返回值
  • 零值表示流还没有定向。
  • 大于零的值表示流是面向宽字符的。
  • 小于零的值表示流是面向字节的。

示例

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

int main ()
{
  FILE * pFile;
  int ret;

  pFile = fopen ("myfile.txt","a");
  if (pFile) {
    fwide (pFile,1);
    ret = fwide (pFile,0);
    if (ret>0) puts ("The stream is wide-oriented");
    else if (ret<0) puts ("The stream is byte-oriented");
    else puts ("The stream is not oriented");
    fclose (pFile);
  }
  return 0;
}

输出
The stream is wide-oriented


另见