c语言strtok函数,c_str()函数
其实c语言strtok函数的问题并不复杂,但是又很多的朋友都不太了解c_str()函数,因此呢,今天小编就来为大家分享c语言strtok函数的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
c语言 strtok请教
strtok每调用一次改写源串的一部分,就是说每次把一个界定符置为'\0'
显然首次调用就直接将所以界定符置为'\0'更容易,但作为提供给用户的库函数,在调用的时候应该给外界带来最少的附加作用;所以麻烦的只是底层的人咯
其实一句strtok(NULL,"?,");会有两个效果; 1是返回一个字串, 2是将字串末尾的界定符置为0;也就是说其实strtok是有副作用的...
#include<string.h>
#include<stdio.h>
int main()
{
char str[]="ab?#de?#g";
char*p;
//首先我想以'#'为界定符提取字串
//期望得到"ab?""de?""g"
p= strtok(str,"#");
while(p!=NULL){
printf("%s\n", p);
p= strtok(NULL,"#");}
puts("");
//然后我又想以'?'为界定符,期望得到"ab""#de""#g"
p= strtok(str,"?");
while(p!=NULL){
printf("%s\n", p);
p= strtok(NULL,"?");}
//结果事与愿违
// ab?
// de?
// g
//
// ab
// strtok没有做到绝对方便用户
//很有可能用户的一个串会多次使用
//解决方法是用户再准备一个拷贝串
}
c++中c_str()用法,越详细越好。
应该这样用:
char c[20];
string s="1234";
strcpy(c,s.c_str());
这样才不会出错,c_str()返回的是一个临时指针,不能对其进行操作。
语法: const char*c_str();
c_str()函数返回一个指向正规C字符串的指针,内容与本string串相同.,这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string对象转换成c中的字符串样式。
注意:一定要使用strcpy()函数等来操作方法c_str()返回的指针。
扩展资料:关于上述用法种最好不要这样用
constchar*c;
std::strings="1234";
c=s.c_str();
std::cout<<c<<std::endl;//输出:1234
s="abcd";
std::cout<<c<<std::endl;//输出:abcd
上面如果继续用c指针的话,导致的错误将是不可想象的,就如:1234变为abcd。
C语言中各种函数的具体作用,要详细点的
字符处理函数
本类别函数用于对单个字符进行处理,包括字符的类别测试和字符的大小写转换
头文件 ctype.h
函数列表<>
函数类别函数用途详细说明
字符测试是否字母和数字 isalnum
是否字母 isalpha
是否控制字符 iscntrl
是否数字 isdigit
是否可显示字符(除空格外) isgraph
是否可显示字符(包括空格) isprint
是否既不是空格,又不是字母和数字的可显示字符 ispunct
是否空格 isspace
是否大写字母 isupper
是否16进制数字(0-9,A-F)字符 isxdigit
字符大小写转换函数转换为大写字母 toupper
转换为小写字母 tolower
地区化
本类别的函数用于处理不同国家的语言差异。
头文件 local.h
函数列表
函数类别函数用途详细说明
地区控制地区设置 setlocale
数字格式约定查询国家的货币、日期、时间等的格式转换 localeconv
数学函数
本分类给出了各种数学计算函数,必须提醒的是ANSI C标准中的数据格式并不符合IEEE754标准,一些C语言编译器却遵循IEEE754(例如frinklin C51)
头文件 math.h
函数列表
函数类别函数用途详细说明
错误条件处理定义域错误(函数的输入参数值不在规定的范围内)
值域错误(函数的返回值不在规定的范围内)
三角函数反余弦 acos
反正弦 asin
反正切 atan
反正切2 atan2
余弦 cos
正弦 sin
正切 tan
双曲函数双曲余弦 cosh
双曲正弦 sinh
双曲正切 tanh
指数和对数指数函数 exp
指数分解函数 frexp
乘积指数函数 fdexp
自然对数 log
以10为底的对数 log10
浮点数分解函数 modf
幂函数幂函数 pow
平方根函数 sqrt
整数截断,绝对值和求余数函数求下限接近整数 ceil
绝对值 fabs
求上限接近整数 floor
求余数 fmod
本分类函数用于实现在不同底函数之间直接跳转代码。头文件 setjmp.h io.h
函数列表
函数类别函数用途详细说明
保存调用环境 setjmp
恢复调用环境 longjmp
信号处理
该分类函数用于处理那些在程序执行过程中发生例外的情况。
头文件 signal.h
函数列表
函数类别函数用途详细说明
指定信号处理函数 signal
发送信号 raise
可变参数处理
本类函数用于实现诸如printf,scanf等参数数量可变底函数。
头文件 stdarg.h
函数列表
函数类别函数用途详细说明
可变参数访问宏可变参数开始宏 va_start
可变参数结束宏 va_end
可变参数访问宏访问下一个可变参数宏 va_arg
输入输出函数
该分类用于处理包括文件、控制台等各种输入输出设备,各种函数以“流”的方式实现
头文件 stdio.h
函数列表
函数类别函数用途详细说明
文件操作
删除文件 remove
修改文件名称 rename
生成临时文件名称 tmpfile
得到临时文件路径 tmpnam
文件访问关闭文件 fclose
刷新缓冲区 fflush
打开文件 fopen
将已存在的流指针和新文件连接 freopen
设置磁盘缓冲区 setbuf
设置磁盘缓冲区 setvbuf
格式化输入与输出函数格式输出 fprintf
格式输入 fscanf
格式输出(控制台) printf
格式输入(控制台) scanf
格式输出到缓冲区 sprintf
从缓冲区中按格式输入 sscanf
格式化输出 vfprintf
格式化输出 vprintf
格式化输出 vsprintf
字符输入输出函数输入一个字符 fgetc
字符串输入 fgets
字符输出 fputc
字符串输出 fputs
字符输入(控制台) getc
字符输入(控制台) getchar
字符串输入(控制台) gets
字符输出(控制台) putc
字符输出(控制台) putchar
字符串输出(控制台) puts
字符输出到流的头部 ungetc
直接输入输出直接流读操作 fread
直接流写操作 fwrite
文件定位函数得到文件位置 fgetpos
文件位置移动 fseek
文件位置设置 fsetpos
得到文件位置 ftell
文件位置复零位 remind
错误处理函数错误清除 clearerr
文件结尾判断 feof
文件错误检测 ferror
得到错误提示字符串 perror
实用工具函数
本分类给出了一些函数无法按以上分类,但又是编程所必须要的。
头文件 stdlib.h
函数列表
函数类别函数用途详细说明
字符串转换函数字符串转换为整数 atoi
字符串转换为长整数 atol
字符串转换为浮点数 strtod
字符串转换为长整数 strtol
字符串转换为无符号长整型 strtoul
伪随机序列产生函数产生随机数 rand
设置随机函数的起动数值 srand
存储管理函数分配存储器 calloc
释放存储器 free
存储器分配 malloc
重新分配存储器 realloc
环境通信中止程序 abort
退出程序执行,并清除环境变量 atexit
退出程序执行 exit
读取环境参数 getenv
程序挂起,临时执行一个其他程序 system
搜索和排序工具二分查找(数据必须已排序) bsearch
快速排序 qsort
整数运算函数求绝对值 abs
div
得到除法运算底商和余数
求长整形底绝对值 labs
求长整形除法的商和余数 ldiv
多字节字符函数得到多字节字符的字节数 mblen
得到多字节字符的字节数 mbtowc
多字节字符转换 wctomb
多字节字符的字符串操作将多字节串转换为整数数组 mbstowcs
将多字节串转换为字符数组 mcstowbs
字符串处理
本分类的函数用于对字符串进行合并、比较等操作
头文件 string.h
函数列表
函数类别函数用途详细说明
字符串拷贝块拷贝(目的和源存储区不可重叠) memcpy
块拷贝(目的和源存储区可重叠) memmove
串拷贝 strcpy
按长度的串拷贝 strncpy
字符串连接函数串连接 strcat
按长度连接字符串 strncat
串比较函数块比较 memcmp
字符串比较 strcmp
字符串比较(用于非英文字符) strcoll
按长度对字符串比较 strncmp
字符串转换 strxfrm
字符与字符串查找字符查找 memchr
字符查找 strchr
字符串查找 strcspn
字符串查找 strpbrk
字符串查找 strspn
字符串查找 strstr
字符串分解 strtok
杂类函数字符串设置 memset
错误字符串映射 strerror
求字符串长度 strlen
日期和时间函数
本类别给出时间和日期处理函数
头文件 time.h
函数列表
函数类别函数用途详细说明
时间操作函数得到处理器时间 clock
得到时间差 difftime
设置时间 mktime
得到时间 time
时间转换函数得到以ASCII码表示的时间 asctime
得到字符串表示的时间 ctime
得到指定格式的时间 strftime
函数库未来的发展方向
本部分用于说明各类别函数库在将来如何发展。
序号库类别头文件详细说明
1错误处理 errno.h
2字符处理 ctype.h
3地区化 local.h
4数学函数 math.h
5信号处理 signal.h
6输入输出 stdio.h
7实用工具程序 stdlib.h
8字符串处理 string.h
好了,文章到此结束,希望可以帮助到大家。