C Library User 手册(25)

  • 10.26 wchar.h
    • 10.26.1 btowc
    • 10.26.2 fgetwc
    • 10.26.3 fgetws
    • 10.26.4 fputwc
    • 10.26.5 fputws
    • 10.26.6 fwide
    • 10.26.7 fwprintf
    • 10.26.8 fwscanf
    • 10.26.9 getwc
    • 10.26.10 getwchar
    • 10.26.11 mbrlen
    • 10.26.12 mbrtowc
    • 10.26.13 mbsinit
    • 10.26.14 mbsrtowcs
    • 10.26.15 mbstate_t
    • 10.26.16 NULL
    • 10.26.17 putwc
    • 10.26.18 putwchar
    • 10.26.19 size_t
    • 10.26.20 swprintf
    • 10.26.21 swscanf
    • 10.26.22 tm
    • 10.26.23 ungetwc
    • 10.26.24 vfwprintf
    • 10.26.25 vswprintf
    • 10.26.26 vwprintf

10.26 wchar.h

包括标准头 <wchar.h> 以便你可以对宽流执行输入和输出操作或操作宽字符串。

10.26.1 btowc

wint_t btowc(int c);

如果 c 等于 EOF,则函数返回 WEOF。 否则,它将 (unsigned char)c 转换为从初始转换状态开始的单字节多字节字符,就像调用 mbrtowc 一样。 如果转换成功,函数返回宽字符转换。 否则,它返回 WEOF。

10.26.2 fgetwc

wint_t fgetwc(FILE *stream);

该函数从输入流中读取下一个宽字符 c(如果存在),前进​​文件位置指示符(如果已定义),然后返回 (wint_t)c。 如果函数设置了文件结束指示符或错误指示符,则返回 WEOF。

10.26.3 fgetws

wchar_t *fgetws(wchar_t *restrict s, int n, FILE *restrict stream);

该函数从输入流中读取宽字符,并将它们存储在数组的连续元素中,从沙子开始,直到它存储 n-1 个宽字符,存储一个 NL 宽字符,或设置文件结尾或错误指示符。 如果 fgetws 存储任何宽字符,它会在数组的下一个元素中存储一个空宽字符来结束。 如果它存储了任何宽字符并且没​​有为流设置错误指示符,则返回 s; 否则,它返回一个空指针。 如果它设置了错误指示符,则数组内容是不确定的。

10.26.4 fputwc

wint_t fputwc(wchar_t c, FILE *stream);

该函数将宽字符 c 写入输出流流,推进文件位置指示符(如果已定义),并返回 (wint_t )c。 如果函数为流设置错误指示符,则返回 WEOF

10.26.5 fputws

int fputws(const wchar_t *restrict s, FILE *restrict stream);

该函数访问字符串 s 中的宽字符并将它们写入输出流流。 该函数不写入终止的空宽字符。 如果未设置错误指示符,则返回非负值; 否则,它返回 WEOF。

10.26.6 fwide

int fwide(FILE *stream, int mode);

该函数确定流流的方向。 如果模式大于零,它首先尝试使流面向宽。 如果 mode 小于零,它首先尝试使流字节定向。 无论如何,该函数返回:

  • 如果流是面向左宽的,则值大于零
  • 如果流未绑定,则为零
  • 如果流是面向左字节的,则值小于零

10.26.7 fwprintf

int fwprintf(FILE *restrict stream, const wchar_t *restrict format,...);

该函数在格式格式和任何附加参数的控制下生成格式化文本,并将每个生成的宽字符写入流流。 它返回生成的宽字符数,或者如果函数为流设置错误指示符,则返回负值。

10.26.8 fwscanf

int fwscanf(FILE *restrict stream, const wchar_t *restrict format,...);

该函数在格式格式和任何附加参数的控制下扫描格式化文本。 它从流中获取每个扫描的字符。 它返回匹配和分配的输入项的数量,或者如果函数在为流设置文件结尾或错误指示符之前未存储值,则返回 EOF。

10.26.9 getwc

wint_t getwc(FILE *stream);

该函数与 fgetwc(stream) 具有相同的效果,只是 getwc 的宏版本可以多次评估流。

10.26.10 getwchar

wint_t getwchar(void);

该函数与 fgetwc(stdin) 的作用相同。

10.26.11 mbrlen

size_t mbrlen(const char *restrict s, size_t n, mbstate_t *restrictps);
该函数相当于调用:
mbrtowc (0, s, n, ps != 0 ? ps : &internal)

其中 internal 是 mbrlen 函数内部的 mbstate_t 类型的对象。 在程序启动时,内部被初始化为初始转换状态。 没有其他库函数改变存储在 internal 中的值。

函数返回:

  • (size_t)-3 如果不需要额外的字节来完成下一个多字节字符,在这种情况下,生成的转换状态表明没有额外的字节被转换并且下一个多字节字符已经产生
  • (size_t)-2 如果在转换所有 n 个字符后,结果转换状态指示不完整的多字节字符
  • (size_t)-1,如果函数在完成下一个多字节字符之前检测到编码错误,在这种情况下,函数将值 EILSEQ 存储在 errno 中,并使生成的转换状态未定义
  • 0(零),如果下一个完整字符是空字符,在这种情况下,生成的转换状态是初始转换状态
  • x,完成下一个多字节字符所需的字节数,在这种情况下,生成的转换状态指示已转换 x 个字节并且已生成下一个多字节字符

因此,mbrlen 有效地返回成功将多字节字符转换为宽字符(不存储转换后的宽字符)所消耗的字节数,或者如果转换不能成功,则返回错误代码。

10.26.12 mbrtowc

size_t mbrtowc(wchar_t *restrict pwc, const char *restrict s,size_t n, mbstate_t *restrict ps);

如果可能,该函数确定完成下一个多字节字符的多字节字符串中的字节数。

如果 ps 不是空指针,则假定多字节字符串的转换状态为 *ps。 否则,假定为 &internal,其中 internal 是 mbrtowc 函数内部的 mbstate_t 类型的对象。 在程序启动时,内部被初始化为初始转换状态。 没有其他库函数会更改存储在 internal 中的值。

如果 s 不是空指针,则函数确定 x,即多字节字符串 s 中完成或构成下一个多字节字符的字节数。 (x 不能大于 n。)否则,函数有效地返回 mbrtowc(0, “”, 1, ps),忽略 pwc 和 n。 (因此,仅当转换状态表明对于相同字符串和转换状态的先前调用 mbrlen、mbrtowc 或 mbsrtowcs 没有未完成的多字节字符时,该函数才返回零。)

如果 pwc 不是空指针,则该函数将完成的多字节字符转换为其对应的宽字符值并将该值存储在 *pwc 中。

函数返回:

  • (size_t)-3 如果不需要额外的字节来完成下一个多字节字符,在这种情况下,生成的转换状态表明没有额外的字节被转换并且下一个多字节字符已经产生
  • (size_t)-2 如果在转换所有 n 个字符后,结果转换状态指示不完整的多字节字符
  • (size_t)-1,如果函数在完成下一个多字节字符之前检测到编码错误,在这种情况下,函数将值 EILSEQ 存储在 errno 中,并使生成的转换状态未定义
  • 0(零),如果下一个完整字符是空字符,在这种情况下,生成的转换状态是初始转换状态
  • x,完成下一个多字节字符所需的字节数,在这种情况下,生成的转换状态指示已转换 x 个字节并且已生成下一个多字节字符

10.26.13 mbsinit

int mbsinit(const mbstate_t *ps);

如果 ps 是空指针或 *ps 指定初始转换状态,则该函数返回非零值。 否则,它返回零。

10.26.14 mbsrtowcs

size_t mbsrtowcs(wchar_t *restrict dst, const char **restrict src,size_t len, mbstate_t *restrict ps);

该函数将从 *src 开始的多字节字符串转换为宽字符序列,就好像通过重复调用以下形式:
x = mbrtowc(dst, *src, n, ps != 0 ? ps : &internal)

其中 n 是某个 > 0 的值,internal 是 mbsrtowcs 函数内部的 mbstate_t 类型的对象。 在程序启动时,内部被初始化为初始转换状态。 没有其他库函数会更改存储在 internal 中的值。

如果 dst 不是空指针,则 mbsrtowcs 函数通过调用 mbrtowc 最多存储 len 宽的字符。 每次调用存储转换后的宽字符的 mbrtowc 后,该函数有效地将 dst 增加 1 和 *src 增加 x。 在返回零的调用之后,mbsrtowcs 将一个空宽字符存储在 dst 并在 *src 存储一个空指针。

如果 dst 是一个空指针,则 len 被有效地分配了一个大值。

函数返回:

  • (size_t)-1,如果调用 mbrtowc 返回 (size_t)-1,表示在完成下一个多字节字符之前检测到编码错误
  • 成功转换的多字节字符数,不包括终止空字符

10.26.15 mbstate_t

typedef o-type mbstate_t;
该类型是一个对象类型 o-type,可以表示任何函数 mbrlen、mbrtowc、mbsrtowcs、wcrtomb 或 wcsrtombs 的转换状态。 形式的定义:
mbstate_t mbst = {0};
确保 mbst 表示初始转换状态。 但是请注意,存储在 typembstate_t 对象中的其他值也可以表示此状态。 要安全地测试此状态,请使用函数 mbsinit。

10.26.16 NULL

#define NULL <either 0, 0L, or (void *)0> [0 in C++]
该宏产生一个可用作地址常量表达式的空指针常量。

10.26.17 putwc

wint_t putwc(wchar_t c, FILE *stream);
该函数与 fputwc(c, stream) 具有相同的效果,只是 putwc 的宏版本可以多次评估流。

10.26.18 putwchar

wint_t putwchar(wchar_t c);
该函数与 fputwc(c, stdout) 的效果相同。

10.26.19 size_t

typedef ui-type size_t;
该类型是你声明用于存储 sizeof 运算符结果的对象的无符号整数类型 ui-type。

10.26.20 swprintf

int swprintf(wchar_t *restrict s, size_t n, const wchar_t *restrict format, ...);

该函数在格式格式和任何附加参数的控制下生成格式化文本,并将每个生成的字符存储在第一个元素具有地址 s 的数组对象的连续位置中。 该函数通过在数组的下一个位置存储一个空宽字符来结束。 如果它不能在大小为 n 的数组中生成和存储所有字符,则该函数返回一个负数。 否则,它返回生成的宽字符数——不包括空宽字符。

10.26.21 swscanf

int swscanf(const wchar_t *restrict s, const wchar_t *restrict format, ...);
该函数在格式格式和任何附加参数的控制下扫描格式化文本。 它从第一个元素的地址为 s 的数组对象的连续位置访问每个扫描的字符。 它返回匹配和分配的项目数,或者如果函数在访问数组中的空宽字符之前未存储值,则返回 EOF。

10.26.22 tm

struct tm;
struct tm 包含描述日历时间的各种属性的成员。 此标头中的声明使 struct tm 成为不完整的类型。 包括标题 <time.h> 以完成类型。

10.26.23 ungetwc

wint_t ungetwc(wint_t c, FILE *stream);
如果 c 不等于 WEOF,则函数将 (wchar_t)c 存储在地址为流的对象中并清除文件结束指示符。 如果 c 等于 WEOF 或存储不能发生,则函数返回 WEOF; 否则,它返回 (wchar_t)c。 从流流中读取宽字符的后续库函数调用获取此存储值,然后将其遗忘。

因此,你可以在读取宽字符后有效地将宽字符推回流。

10.26.24 vfwprintf

int vfwprintf(FILE *restrict stream, const wchar_t *restrict format, va_​​list arg);

该函数在格式格式和任何附加参数的控制下生成格式化文本,并将每个生成的宽字符写入流流。 它返回生成的宽字符数,或者如果函数为流设置错误指示符,则返回负值。

该函数通过使用 ap 指定的上下文信息来访问附加参数。 程序必须在调用函数之前执行宏va_start,然后在函数返回后执行宏va_end。

10.26.25 vswprintf

int vswprintf(wchar_t *restrict s, size_t n, const wchar_t *restrict format, va_list arg);

该函数在格式格式和任何附加参数的控制下生成格式化文本,并将每个生成的宽字符存储在第一个元素具有地址 s 的数组对象的连续位置中。 该函数通过在数组的下一个位置存储一个空宽字符来结束。 如果它不能在大小为 n 的数组中生成和存储所有字符,则该函数返回一个负数。 否则,它返回生成的宽字符数——不包括空宽字符。

该函数通过使用 ap 指定的上下文信息来访问附加参数。 程序必须在调用函数之前执行宏va_start,然后在函数返回后执行宏va_end。

10.26.26 vwprintf

int vwprintf(const wchar_t *restrict format, va_list arg);

该函数在格式格式和任何附加参数的控制下生成格式化文本,并将每个生成的宽字符写入流标准输出。 它返回生成的字符数,如果函数为流设置错误指示符,则返回负值。

该函数通过使用 ap 指定的上下文信息来访问附加参数。 程序必须在调用函数之前执行宏va_start,然后在函数返回后执行宏va_end。

C Library User 手册(25)相关推荐

  1. Java开发手册——嵩山版(清幽现云山,虚静出内功)

    终于找到了--阿里巴巴Java开发手册1.7.0(嵩山版) 前言 <Java 开发手册>是阿里巴巴集团技术团队的集体智慧结晶和经验总结,经历了多次大规模一 线实战的检验及不断完善,公开到业 ...

  2. Android Support Annotation Library使用详解

    概述 Support Annotation Library是在Android Support Library19.1版本开始引入的一个全新的函数包,它包含了诸多有用的元注解.用来帮助开发者在编译期间发 ...

  3. Python 办公自动化:全网最强最详细 PDF 文件操作手册!

    PDF(Portable Document Format)是一种便携文档格式,便于跨操作系统传播文档.PDF文档遵循标准格式,因此存在很多可以操作PDF文档的工具,Python自然也不例外. 而Pyt ...

  4. 阿里巴巴 Java 开发手册1.4.0

    2019独角兽企业重金招聘Python工程师标准>>> 阿里巴巴 Java 开发手册1.4.0 1/38 Java 开发手册 1.4.0 阿里巴巴集团技术团队 2018.5.20 增 ...

  5. 阿里巴巴Java开发规范手册(转载)

    阿里巴巴 JAVA 开发手册   1 / 32    Java 开发手册  版本号 制定团队 更新日期 备  注  1.0.0 阿里巴巴集团技术部 2016.12.7 首次向 Java 业界公开    ...

  6. JAVA开发手册华山版 - 学习笔记

    JAVA开发手册华山版 关于Java开发手册 JAVA开发手册(华山版)下载 一.编程规约 1. 编程风格 2. 常量定义 3. 代码格式 4. OOP规约 5. 集合处理 6. 并发处理 7. 控制 ...

  7. Linux常用命令介绍

    Linux命令查询网址:https://ipcmen.com/ 命令简介 命令分为内部命令和外部命令 内部命令实际上是shell程序的一部分,其中包含的是一些比较简单的linux系统命令,这些命令由s ...

  8. android 使用jar里 aidl,Android Studio中用gradle打包带AIDL文件的jar文件

    关键代码task class_jar(type: Jar) { from "build/intermediates/classes/release/" //核心,将.class 文 ...

  9. ClickHouse系列教程七:centos下源码编译安装及报错解决

    ClickHouse系列教程: ClickHouse系列教程 参考上一篇博客: ClickHouse系列教程六:源码分析之Debug编译运行 先安装 gcc 8, g++ 8, cmake 3, ni ...

  10. Mysqldump备份说明及数据库备份脚本分享-运维笔记

    MySQLdump是MySQL自带的导出数据工具,即mysql数据库中备份工具,用于将MySQL服务器中的数据库以标准的sql语言的方式导出,并保存到文件中.Mysqldump是一个客户端逻辑备份的工 ...

最新文章

  1. 不要上手就学深度学习!超详细的人工智能专家路线图,GitHub数天获2.1k星
  2. mega_[MEGA DEAL] Android课程的Java基础知识(61%折扣)
  3. boost::mp11::mp_clear相关用法的测试程序
  4. struts2标签处理下拉列表
  5. CSS选择器详解(转)
  6. PLSQL Developer安装破解 ,以及连接配置
  7. 高颜值智能存储 华三魔术家M2无线云盘评测
  8. 心态对了一切都对了 -- Entropy 熵
  9. 【学习笔记】Python办公自动化 - Task 01 文件自动化处理 邮件自动发送
  10. C++ Primer 第五版 课后章节练习答案 第九章
  11. 学生管理系统Element UI版
  12. 家用电脑如何安装服务器系统,普通电脑安装服务器系统
  13. python将电视剧按收视率进行排序_Python爬虫实现数据可视化,卫视实时收视率对比,就是如此强大!...
  14. 没学历没经验没外语没技能,啥都没有靠啥找工作?
  15. 有关上传到APPStore上iphone5,5c,4s下载应用,出现该APP与设备不兼容问题
  16. IntelliJ配置jenkins服务的Crumb Data
  17. 税后收入计算与四险一金
  18. HTML5树叶飘落动画
  19. ILRuntime学习(之四)
  20. Mysql面试之索引

热门文章

  1. 删除双系统遗留的efi
  2. 无穷级数求和7个公式_这些的公式是怎么得到的?
  3. 【Python】爬取TapTap原神评论并生成词云分析
  4. [HAOI2009]毛毛虫 树形DP
  5. 电容篇-电容器件工作原理及参数分析理解
  6. 连续分配存储管理方式
  7. matlab仿真高尔顿正态分布源码,童年趣话:从弹珠台到高斯分布
  8. 为什么哪些90后程序员年薪50万+,他们经历了啥?
  9. Labview的CAN通讯
  10. 数学期望方差 expectationvariance