C/C++标准函数库

时间:2022-03-20 04:04:15

标准 C I/O

clearerr() 清除错误
fclose() 关闭一个文件
feof() 如果到达文件尾(end-of-file)返回"True"(真)
ferror() 检查一个文件错误
fflush() 书写输出缓存的内容
fgetc() 从流获取一个字符
fgetpos() 获取文件位置指针
fgets() 从一个流获取一串字符
fopen() 打开一个文件
fprintf() 打印格式化的输出到一个文件
fputc() 写一个字符到一个文件
fputs() 写一个字符串到一个文件
fread() 从一个文件读取
freopen() 用一个不同的名称打开一个存在的流
fscanf() 从一个文件读取一个格式化的输入
fseek() 在文件中移动到一个指定的位置
fsetpos() 在一个文件中移动到一个指定的位置
ftell() 返回当前文件的位置指针
fwrite() 写入一个文件
getc() 从一个文件读取一个字符
getchar() STDIN(标准输入)读取一个字符
gets() STDIN(标准输入)读取一个字符串
perror() 显示当前错误的一个字符串版本到STDERR(标准错误输出)
printf() 写格式化的输出到STDOUT(标准输出)
putc() 写一个字符到一个流
putchar() 写一个字符到STDOUT(标准输出)
puts() 写一个字符串到STDOUT(标准输出)
remove() 清除一个文件
rename() 重命名一个文件
rewind() 移动文件位置指针到一个文件的开始处
scanf() STDIN(标准输入)读取格式化输入
setbuf() 设置一个指定流的缓冲区
setvbuf() 设置一个指定流的缓冲区和大小
sprintf() 写格式化的输出到缓冲区
sscanf() 从一个缓冲区读取格式化的输入
tmpfile() 返回一个到一个临时文件的指针
tmpnam() 返回一个独特的文件名
ungetc() 把一个字符放回一个流
vprintf, vfprintf, vsprintf 写用参数列表格式化输出

标准字符串操作:

atof()

将字符串转换成浮点数

atoi()

将字符串转换成整数

atol()

将字符串转换成长整型数

isalnum()

当字母或数字字符时, 返回真值

isalpha()

当字母字符时, 返回真值

iscntrl()

当控制字符时, 返回真值

isdigit()

当数字字符时, 返回真值

isgraph()

当非空格可打印字符时, 返回真值

islower()

当小写字母字符时, 返回真值

isprint()

当可打印字符时, 返回真值

ispunct()

当标点字符时, 返回真值

isspace()

当空格字符时, 返回真值

isupper()

当大写字母字符时, 返回真值

isxdigit()

当十六进制字符时, 返回真值

memchr()

在某一内存范围中查找一特定字符

memcmp()

比较内存内容

memcpy()

拷贝内存内容

memmove()

拷贝内存内容

memset()

将一段内存空间填入某值

strcat()

连接两个字符串

strchr()

查找某字符在字符串中首次出现的位置

strcmp()

比较两个字符串

strcoll()

采用目前区域的字符排列次序来比较字符串

strcpy()

拷贝字符串

strcspn()

在某字符串中匹配指定字符串

strerror()

返回错误码对应的文本信息

strlen()

返回指定字符串的长度

strncat()

连接某一长度的两个字符串

strncmp()

比较某一长度的两个字符串

strncpy()

复制某一长度的一个字符串到另一字符串中

strpbrk()

查找某字符串在另一字符串中首次出现的位置

strrchr()

查找某字符在字符串中末次出现的位置

strspn()

返回子串的长度,子串的字符都出现包含于另一字符串中

strstr()

在一字符串中查找指定的子串首次出现的位置

strtod()

将字符串转换成浮点数

strtok()

查找指定字符之前的子串

strtol()

将字符串转换成长整型数

strtoul()

将字符串转换成无符号长整型数

strxfrm()

转换子串, 可以用于字符串比较

tolower()

将字符转换成小写字符

toupper()

将字符转换成大写字符

数学处理函数:

abs()

求绝对值

acos()

求反余弦

asin()

求反正弦

atan()

求反正切

atan2()

求反正切,按符号判定象限

ceil()

求不小于某值的最小整数 (求上界)

cos()

求余弦

cosh()

求双曲余弦

div()

求商和余数

exp()

求e的幂

fabs()

求浮点数的绝对值

floor()

求不大于某值的最大整数 (求下界)

fmod()

求模数

frexp()

求数的科学表示法形式

labs()

求长整型数的绝对值

ldexp()

以科学计数法计算

ldiv()

以长整型返回商和余数

log()

自然对数

log10()

以10为底的自然对数

modf()

将一个数分解成整数和小数部分

pow()

求幂

sin()

求正弦

sinh()

求双曲正弦

sqrt()

求平方根

tan()

求正切

tanh()

求双曲正切

标准时间跟日期函数:

asctime()

时间文本格式

clock()

返回自程序开始运行所经过的时间

ctime()

返回特定格式时间

difftime()

两时刻的间隔

gmtime()

返回指向当前格林威治时间的指针

localtime()

返回指向当前时间的指针

mktime()

返回指定时间的日历格式

strftime()

返回日期和时间的单个元素

time()

返回系统的当前日历时间

标准c内存函数

calloc()

分配一个二维储存空间

free()

释放已分配空间

malloc()

分配空间

realloc()

改变已分配空间的大小

其他标准c函数

abort()

停止程序执行

assert()

当表达式非真,停止程序执行

atexit()

当程序退出执行设定的程序

bsearch()

执行折半查找

exit()

停止程序执行

getenv()

获取指定环境变量的值

longjmp()

从设定点执行程序

qsort()

执行快速排序

raise()

向程序发送信号

rand()

返回一个随机数

setjmp()

设置程序执行点

signal()

将某函数设置成一个信号句柄

srand()

初始化随机数发生源

system()

执行系统调用

va_arg()

使用可变长度参数列表

C++ I/O

<iostream>库自动定义了一些标准对象:

  • cout, ostream类的一个对象,可以将数据显示在标准输出设备上.
  • cerr, ostream类的另一个对象,它无缓冲地向标准错误输出设备输出数据.
  • clog, 类似cerr,但是它使用缓冲输出.
  • cin, istream类的一个对象,它用于从标准输入设备读取数据.

<fstream>库允许编程人员利用ifstreamofstream类进行文件输入和输出.

一些C++ I/O流(精度,判断等)的行为可以通过操作不同的标志来修改。

Constructors 构造器
bad() 如果出现错误则返回true
clear() 清除状态标志
close() 关闭一个流
eof() 如果处于文件结尾处则返回true
fail() 如果出现错误则返回true
fill() 控制默认填充字符
flags() 操作flags
flush() 清空缓冲区
gcount() 返回读取的最后一次输入的字符数
get() 读取字符
getline() 读取一行字符
good() 如果没有出现过错误则返回true
ignore() 读取字符并忽略指定字符
open() 创建一个输入流
peek() 检查下一个输入的字符
precision() 设置精度
put() 写字符
putback() 返回字符给一个流
rdstate() 返回流的状态
read() 读取字条符
seekg() 在一个输入流中进行随机访问
seekp() 在一个输出流中进行随机访问
setf() 设置格式标志
sync_with_stdio() 同标准I/O同步
tellg() 使用输入流读取流指针
tellp() 使用输出流读取流指针
unsetf() 清除格式标志
width() 操作域宽度
write() 写字符

C++ Strings(字符串)

Constructors 构造函数,用于字符串初始化
Operators 操作符,用于字符串比较和赋值
append() 在字符串的末尾添加文本
assign() 为字符串赋新值
at() 按给定索引值返回字符
begin() 返回一个迭代器,指向第一个字符
c_str() 将字符串以C字符数组的形式返回
capacity() 返回重新分配空间前的字符容量
compare() 比较两个字符串
copy() 将内容复制为一个字符数组
data() 返回内容的字符数组形式
empty() 如果字符串为空,返回真
end() 返回一个迭代器,指向字符串的末尾。(最后一个字符的下一个位置)
erase() 删除字符
find() 在字符串中查找字符
find_first_of() 查找第一个与value中的某值相等的字符
find_first_not_of() 查找第一个与value中的所有值都不相等的字符
find_last_of() 查找最后一个与value中的某值相等的字符
find_last_not_of() 查找最后一个与value中的所有值都不相等的字符
get_allocator() 返回配置器
insert() 插入字符
length() 返回字符串的长度
max_size() 返回字符的最大可能个数
rbegin() 返回一个逆向迭代器,指向最后一个字符
rend() 返回一个逆向迭代器,指向第一个元素的前一个位置
replace() 替换字符
reserve() 保留一定容量以容纳字符串(设置capacity值)
resize() 重新设置字符串的大小
rfind() 查找最后一个与value相等的字符(逆向查找)
size() 返回字符串中字符的数量
substr() 返回某个子字符串
swap() 交换两个字符串的内容

C++ 标准模板库(STL)

C++ STL (Standard Template Library标准模板库) 是通用类模板和算法的集合,它提供给程序员一些标准的数据结构的实现如 queues(队列), lists(链表), 和 stacks(栈)等.

C++ STL 提供给程序员以下三类数据结构的实现:

cppreference.com -> Standard C String & Character -> 详解

标准c字符和字符串


atof

语法:

 
  #include <stdlib.h>
  double atof( const char *str );

功能:将字符串str转换成一个双精度数值并返回结果。 参数str 必须以有效数字开头,但是允许以“E”或“e”除外的任意非数字字符结尾。例如:

    x = atof( "42.0is_the_answer" );

x的值为42.0.

相关主题:
atoi() and atol().


atoi

语法:

 
  #include <stdlib.h>
  int atoi( const char *str );

功能:将字符串str转换成一个整数并返回结果。参数str 以数字开头,当函数从str 中读到非数字字符则结束转换并将结果返回。例如,

    i = atoi( "512.035" );

i 的值为 512.

相关主题:
atof() and atol().


atol

语法:

 
  #include <stdlib.h>
  long atol( const char *str );

功能:将字符串转换成长整型数并返回结果。函数会扫描参数str字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时才结束转换,并将结果返回。例如,

    x = atol( "1024.0001" );

x的值为1024L.

相关主题:
atof() and atoi().


isalnum

语法:

 
  #include <ctype.h>
  int isalnum( int ch );

功能:如果参数是数字或字母字符,函数返回非零值,否则返回零值。

    char c;
    scanf( "%c", &c );
    if( isalnum(c) )
      printf( "You entered the alphanumeric character %c\n", c );

相关主题:
isalpha()iscntrl()isdigit()isgraph()isprint()ispunct(), and isspace().


isalpha

语法:

 
  #include <ctype.h>
  int isalpha( int ch );

功能:如果参数是字母字符,函数返回非零值,否则返回零值。

    char c;
    scanf( "%c", &c );
    if( isalpha(c) )
      printf( "You entered a letter of the alphabet\n" );

相关主题:
isalnum()iscntrl()isdigit()isgraph()isprint()ispunct(), and isspace().


iscntrl

语法:

 
  #include <ctype.h>
  int iscntrl( int ch );

功能:如果参数是控制字符(0和0x1F之间的字符,或者等于0x7F)函数返回非零值,否则返回零值。

相关主题:
isalnum()isalpha()isdigit()isgraph()isprint()ispunct(), and isspace().


isdigit

语法:

 
  #include <ctype.h>
  int isdigit( int ch );

功能:如果参数是0到9之间的数字字符,函数返回非零值,否则返回零值.

    char c;
    scanf( "%c", &c );
    if( isdigit(c) )
      printf( "You entered the digit %c\n", c );

相关主题:
isalnum()isalpha()iscntrl()isgraph()isprint()ispunct(), and isspace().


isgraph

语法:

 
  #include <ctype.h>
  int isgraph( int ch );

功能:如果参数是除空格外的可打印字符(可见的字符),函数返回非零值,否则返回零值。

相关主题:
isalnum()isalpha()iscntrl()isdigit()isprint()ispunct(), and isspace().


islower

语法:

 
  #include <ctype.h>
  int islower( int ch );

功能:如果参数是小写字母字符,函数返回非零值,否则返回零值。

相关主题:
isupper()


isprint

语法:

 
  #include <ctype.h>
  int isprint( int ch );

功能:如果参数是可打印字符(包括空格),函数返回非零值,否则返回零值。

相关主题:
isalnum()isalpha()iscntrl()isdigit()isgraph()ispunct(), and isspace().


ispunct

语法:

 
  #include <ctype.h>
  int ispunct( int ch );

功能:如果参数是除字母,数字和空格外可打印字符,函数返回非零值,否则返回零值。

相关主题:
isalnum()isalpha()iscntrl()isdigit()isgraph()isprint(), and isspace().


isspace

语法:

 
  #include <ctype.h>
  int isspace( int ch );

功能:如果参数是空格类字符(即:单空格,制表符,垂直制表符,满页符,回车符,新行符),函数返回非零值,否则返回零值。

相关主题:
isalnum()isalpha()iscntrl()isdigit()isgraph(), and ispunct().


isupper

语法:

 
  #include <ctype.h>
  int isupper( int ch );

功能:如果参数是大写字母字符,函数返回非零值,否则返回零值。

相关主题:
tolower()


isxdigit

语法:

 
  #include <ctype.h>
  int isxdigit( int ch );

功能:如果参数是十六进制数字字符(即:A-F, a-f, 0-9),函数返回非零值,否则返回零值。

相关主题:
isalnum()isalpha()iscntrl()isdigit()isgraph()ispunct(), and isspace().


memchr

语法:

 
  #include <string.h>
  void *memchr( const void *buffer, int ch, size_t count );

功能:函数在buffer指向的数组的count个字符的字符串里查找ch 首次出现的位置。返回一个指针,指向ch 在字符串中首次出现的位置, 如果ch 没有在字符串中找到,返回NULL。例如:

    char names[] = "Alan Bob Chris X Dave";
    if( memchr(names,'X',strlen(names)) == NULL )
      printf( "Didn't find an X\n" );
    else
      printf( "Found an X\n" );

相关主题:
memcpy() and strstr().


memcmp

语法:

 
  #include <string.h>
  int memcmp( const void *buffer1, const void *buffer2, size_t count );

功能:函数比较buffer1 和 buffer2的前count 个字符。返回值如下:

Value

解释

less than 0

buffer1 is less than buffer2

equal to 0

buffer1 is equal to buffer2

greater than 0

buffer1 is greater than buffer2

相关主题:
memchr()memcpy(), and strcmp().


memcpy

语法:

 
  #include <string.h>
  void *memcpy( void *to, const void *from, size_t count );

功能:函数从from中复制count 个字符到to中,并返回to指针。 如果to 和 from 重叠,则函数行为不确定。

相关主题:
memmove().


memmove

语法:

 
  #include <string.h>
  void *memmove( void *to, const void *from, size_t count );

功能: 与mencpy相同,不同的是当to 和 from 重叠,函数正常仍能工作。

相关主题:
memcpy().


memset

语法:

 
  #include <string.h>
  void *memset( void *buffer, int ch, size_t count );

功能: 函数拷贝ch 到buffer 从头开始的count 个字符里, 并返回buffer指针。 memset() 可以应用在将一段内存初始化为某个值。例如:

    memset( the_array, '\0', sizeof(the_array) );

这是将一个数组的所以分量设置成零的很便捷的方法。

相关主题:
memcmp()memcpy(), and memmove().


strcat

语法:

 
  #include <string.h>
  char *strcat( char *str1, const char *str2 );

功能:函数将字符串str2 连接到str1的末端,并返回指针str1. 例如:

    printf( "Enter your name: " );
    scanf( "%s", name );
    title = strcat( name, " the Great" );
    printf( "Hello, %s\n", title );

相关主题:
strchr()strcmp(), and strcpy().


strchr

语法:

 
  #include <string.h>
  char *strchr( const char *str, int ch );

功能:函数返回一个指向str 中ch 首次出现的位置,当没有在str 中找ch到返回NULL。

相关主题:
strpbrk()strspn()strstr(), and strtok().


strcmp

语法:

 
  #include <string.h>
  int strcmp( const char *str1, const char *str2 );

功能:比较字符串str1 and str2, 返回值如下:

返回值

解释

less than 0

str1 is less than str2

equal to 0

str1 is equal to str2

greater than 0

str1 is greater than str2

例如:

    printf( "Enter your name: " );
    scanf( "%s", name );
    if( strcmp( name, "Mary" ) == 0 )
      printf( "Hello, Dr. Mary!\n" );

相关主题:
memcmp()strchr()strcpy(), and strncmp().


strcoll

语法:

 
  #include <string.h>
  int strcoll( const char *str1, const char *str2 );

功能:比较字符串str1 和 str2, 很象strcmp. 但是, strcoll() 使用在目前环境中由setlocale()设定的次序进行比较。


strcpy

语法:

 
  #include <string.h>
  char *strcpy( char *to, const char *from );

功能:复制字符串from 中的字符到字符串to,包括空值结束符。返回值为指针to

相关主题:
memcpy()strchr()strcmp()strncmp(), and strncpy().


strcspn

语法:

 
  #include <string.h>
  size_t strcspn( const char *str1, const char *str2 );

功能:函数返回str1 开头连续n个字符都不含字符串str2内字符的字符数。

相关主题:
strrchr()strpbrk()strstr(), and strtok().


strerror

语法:

 
  #include <string.h>
  char *strerror( int num );

功能:函数返回一个被定义的与某错误代码相关的错误信息。


strlen

语法:

 
  #include <string.h>
  size_t strlen( char *str );

功能:函数返回字符串str 的长度( 即空值结束符之前字符数目)。

相关主题:
memcpy()strchr()strcmp(), and strncmp().


strncat

语法:

 
  #include <string.h>
  char *strncat( char *str1, const char *str2, size_t count );

功能:将字符串from 中至多count个字符连接到字符串to中,追加空值结束符。返回处理完成的字符串。

相关主题:
strcat()strnchr()strncmp(), and strncpy().


strncmp

语法:

 
  #include <string.h>
  int strncmp( const char *str1, const char *str2, size_t count );

功能:比较字符串str1 和 str2中至多count个字符。返回值如下:

返回值

解释

less than 0

str1 is less than str2

equal to 0

str1 is equal to str2

greater than 0

str1 is greater than str2

如果参数中任一字符串长度小于count, 那么当比较到第一个空值结束符时,就结束处理。

相关主题:
strcmp()strnchr(), and strncpy().


strncpy

语法:

 
  #include <string.h>
  char *strncpy( char *to, const char *from, size_t count );

功能:将字符串from 中至多count个字符复制到字符串to中。如果字符串from 的长度小于count,其余部分用'\0'填补。返回处理完成的字符串。

相关主题:
memcpy()strchr()strncat(), and strncmp().


strpbrk

语法:

 
  #include <string.h>
  char *strpbrk( const char *str1, const char *str2 );

功能:函数返回一个指针,它指向字符串str2中任意字符在字符串str1 首次出现的位置,如果不存在返回NULL。

相关主题:
strspn()strrchr()strstr(), and strtok().


strrchr

语法:

 
  #include <string.h>
  char *strrchr( const char *str, int ch );

功能:函数返回一个指针,它指向字符ch 在字符串str末次出现的位置,如果匹配失败,返回NULL。

相关主题:
strpbrk()strspn()strstr()strtok(),


strspn

语法:

 
  #include <string.h>
  size_t strspn( const char *str1, const char *str2 );

功能:函数返回字符串str1中第一个不包含于字符串str2的字符的索引。

相关主题:
strpbrk()strrchr()strstr()strtok(),


strstr

语法:

 
  #include <string.h>
  char *strstr( const char *str1, const char *str2 );

功能:函数返回一个指针,它指向字符串str2 首次出现于字符串str1中的位置,如果没有找到,返回NULL。

相关主题:
strchr()strcspn()strpbrk()strspn()strtok()strrchr(),


strtod

语法:

 
  #include <stdlib.h>
  double strtod( const char *start, char **end );

功能:函数返回带符号的字符串start所表示的浮点型数。字符串end 指向所表示的浮点型数之后的部分。如果溢出发生,返回HUGE_VAL或 -HUGE_VAL

相关主题:
atof()


strtok

语法:

 
  #include <string.h>
  char *strtok( char *str1, const char *str2 );

功能:函数返回字符串str1中紧接“标记”的部分的指针, 字符串str2是作为标记的分隔符。如果分隔标记没有找到,函数返回NULL。为了将字符串转换成标记,第一次调用str1 指向作为标记的分隔符。之后所以的调用str1 都应为NULL。

例如:

    char str[] = "now # is the time for all # good men to come to the # aid of their country";
    char delims[] = "#";
    char *result = NULL;
 
    result = strtok( str, delims );
 
    while( result != NULL ) {
        printf( "result is \"%s\"\n", result );
         result = strtok( NULL, delims );
    }

以上代码的运行结果是:

    result is "now "
    result is " is the time for all "
    result is " good men to come to the "
    result is " aid of their country"

相关主题:
strchr()strcspn()strpbrk()strrchr(), and strspn().


strtol

语法:

 
  #include <stdlib.h>
  long strtol( const char *start, char **end, int base );

功能:函数返回带符号的字符串start所表示的长整型数。参数base代表采用的进制方式。指针end 指向start所表示的整型数之后的部分。如果返回值无法用长整型表示,函数则返回LONG_MAXLONG_MIN. 错误发生时,返回零。

相关主题:
atol().


strtoul

语法:

 
  #include <stdlib.h>
  unsigned long strtoul( const char *start, char **end, int base );

功能:函数基本等同 strtol(), 不同的是,它不仅可以返回长整型数,而且可以返回无符号的长整型数。

相关主题:
strtol()


strxfrm

语法:

 
  #include <string.h>
  size_t strxfrm( char *str1, const char *str2, size_t num );

功能:函数将字符串str2 的前num 个字符存储到字符串str1中。如果strcoll() 处理字符串str1 和旧的字符串str2, 返回值和strcmp()的处理结果一样。

相关主题:
strcmp()strcoll(),


tolower

语法:

 
  #include <ctype.h>
  int tolower( int ch );

功能:函数字符ch的小写形式。

相关主题:
toupper(),


toupper

语法:

 
  #include <ctype.h>
  int toupper( int ch );

功能:函数字符ch的大写形式。

相关主题:
tolower(),