当前位置: 代码迷 >> 综合 >> String/WString, char* /wchar_t* 相关操作函数
  详细解决方案

String/WString, char* /wchar_t* 相关操作函数

热度:6   发布时间:2024-01-20 02:22:14.0

转载自:http://blog.csdn.net/fghygzs/article/details/17289675

string和wstring

容器


[cpp]  view plain copy
  1. allocate           //分配器  
  2. iterator           //访回string的迭代器  
  3. const_iterator     //访回string的常量迭代器  
  4. pointer            //指向T(char)的指针  
  5. const_pointer      //指向T(char)的常量指针  
  6. const_reference    //T(char)的常量引用  
  7. reference          //T(char)的引用  
  8. const_reverse_iterator     //访回string的方向常量迭代器  
  9. reverse_iterator   //访回string的方向迭代器  
  10. difference_type    //int类型  
  11. size_type     unsigned int类型  
  12. traits_type  
  13. value_type         //对象类型T(char)  

字符串操作

[cpp]  view plain copy
  1. const char &operator[](int n)const;  
  2. const char &at(int n)const;    //返回当前字符串中第n个字符的位置,越界会抛出out_of_range异常  
  3. const char *data()const;       //返回一个非null终止的c字符数组,其大小为size()的返回值,  
  4. const char *c_str()const;      //返回以null终止的c风格字符串  
  5.       int  copy(char *s, int n, int pos = 0) const;  //把当前串中以pos开始的n个字符拷贝到s字符数组中,返回实际拷贝的数目  
  6. string&    assign(const char *s); //用新字符串填充,等同operator=  
  7. string&    append(const char *s); //把s连接到当前字符串结尾  
  8.            clear()             //清空字符串  
  9. string&    replace(size_type p,size_type n,const char *s);//删除从p开始的n个字符,然后在p处插入s  
  10. string&    insert(size_type p,const char *s);      //在位置p插入s  
  11. iterator   erase(iterator first, iterator last);   //删除[first,last)之间的所有字符,  
  12. substr(pos) const//返回pos开始的n个字符组成的字符串  
  13. void       swap(string& str);                              //交换当前字符串与str的值  


特性

[cpp]  view plain copy
  1. size_type capacity() const;      //返回容量即不必增加内存即可存放的元素个数  
  2. void      reserve(size_type n);  //强制修改容量为n  
  3. size_type max_size() const;      //返回string对象中可存放的最大字符串长度,不是capacity()的大小  
  4. size_type size() const;          //返回当前字符串的大小  
  5. size_type length() const;        //返回当前字符串的长度,跟size()相识。  
  6. void resize(size_type n, char c = char()); //把字符串当前大小置为n,并用字符c填充不足的部分  
  7.   
  8. bool empty() const//当前字符串是否为空与size()效率相同  
字符串比较

[cpp]  view plain copy
  1. int    compare(const string& str) const;               //比较字符串大小。小于str返回-1;相等返回0;  

查找

[cpp]  view plain copy
  1. size_type find(char c,size_type pos = 0) const;  //从pos开始查找c的位置。失败返回string::npos  
  2. size_type find_first_of(char c,size_type pos = 0) const//从pos开始查找字符c第一次出现的位置。失败返回string::npos。  
  3. size_type find_first_not_of(char c,size_type pos = 0)const;//从pos开始查找c不在当前字符串第一次出现的位置。失败返回string::npos。  
  4.   
  5. size_type rfind(char c,size_type pos = npos) const;//从当前字符串pos开始从后向前查找。默认是最后一个位置,失败返回string::npossize_type find_last_of(const char *s,size_type pos=spos) const;//从pos开始从后向前查找不在s的最后一个位置。失败返回string::npos。size_type find_last_not_of(char c,size_type pos = 0) const;//从pos开始从后向前查找不在字符c中出现的最后一个位置。失败返回string::npos。  

 常用


[cpp]  view plain copy
  1. const_iterator   begin() const;   //返回string的起始位置  
  2. const_reverse    rbegin() const;  //返回反向迭代器  
  3. const_iterator   end() const;     //返回string的最后一个字符后面的位置  
  4. const_iterator   rend();          //返回反向迭代器  
  5. push_back                         //在尾部插入字符  
  6. allocator_type get_allocator();   //返回本字符串的配置器  

字符操作

strcpy(char*,char*)char*

lstrcpy //把参2拷贝到参1中。返回指针或NULL

wcscpy

_tcscpy

_mbscpy

strncpy(char*,char*,int)char*

把参2里的至多n个字符复制到参1。填充空字符

wcsncpy

_tcsnccpy

_mbsncpy

strcat(char*,char*)char*

lstrcat把参2复制到参1之后。参1要且足够大的字符数组

wcscat

_tcscat

_mbscat

strncat(char*,char*,int)char*

把参2里最多(不多余参2长度)的n个字符复制到参1之后

wcsncat

_tcsncat

_mbsncat

strdupr(char*)char*

复制字符串,需要调用free释放

wcsdupr

_tcsdupr

_mbsdupr

strrev(char*)char*

反转字符串

wcsrev

_tcsrev

_mbsrev

strset(char*,int)char*

用指定字符填充缓冲区

wcsset

_tcsset

 

strlwr(char*)

将字符串转换成大写

wcslwr

_tcslwr

 

strupr(char*)

将字符串转换成小写

wcsupr

_tcsupr

 

strxfrm(char*,char*,int)

复制源字符串到目标字符串

wcsxfrm

_tcsxfrm

 

 

 

 

 

 

字符串查找

 

 

 

 

strchr(char*,char)

查寻字符并返回第一次出现的位置的指针。没有返回NULL

wcschr

_tcschr

 

strstr(char*,char*)

从参1中查找字符串,如果没有返回null

wcsstr

_tcsstr

 

strcspn(char*,char*)

返回参1中第一个在s2中出现的字符下标值

wcscspn

_strcspn

 

strpbrk(char*,char*)

在参1中找出第一个出现在参2中的任一字符,返回指针没有返回NULL

wcspbrk

_tcspbrk

 

strtok(char*,char*)

在参1中查寻分隔符参2,并修改成’\0’

 

 

 

strrchr(cs,c)

在cs中查寻c并返回c最后一个出现的位置,没有时返回NULL

wcsrchr

_tcsrchr

 

strspn(cs,ct)

返回字符串中第一个不在指定字符串中出现的字符

wcsspn

_tcsspn

 

 

 

 

 

 

字符串比较

 

 

 

 

strcmp(cs,ct)

比较字符串大小,大于返回1等于返回0

wcscmp

_tcscmp

 

stricmp()

忽略大小写比较字符串

wcsicmp

_tcsicmp

 

strncmp(cs,ct,n)

比较字符串大小,至多比较n个字符

wcsncmp

_tcsnccmp

 

strcoll(s1,s2)

用环境变量LC_COLLATE比较两个字符串大小

wcscoll

_tcscoll

 

 

 

 

 

 

字符串特性

 

 

 

 

strlen(const char*)

字符串长度(不包含‘\0’)

wcslen

_tcsclen

 

strerror(n)

返回与错误编号n相关的错误信息串(指向该错误信息串的指针)

wcserror

_tcserror

 

tolower(int c)                                        //当c是大写字母时返回对应小写字母,否则返回c本身

toupper(int c)                                        //当c是小写字母时返回对应大写字母,否则返回c本身

 

字符处理函数(<ctype.h>)

isalpha(c)int                                          //c是字母字符

isdigit(c)int                                            //c是数字字符

isalnum(c)int                                         //c是字母或数字字符

isspace(c)         int                                          //c是空格、制表符、换行符

isupper(c)int                                          //c是大写字母

islower(c)                                                         //c是小写字母

iscntrl(c)                                                 //c是控制字符

isprint(c)                                                 //c是可打印字符,包括空格

isgraph(c)                                                       //c是可打印字符,不包括空格

isxdigit(c)                                               //c是十六进制数字字符

ispunct(c)                                                         //c是标点符号

writeToStream                                               //向指定流中输出字符串


内存操作

ZeroMemory(PVOID,SIZE_T)  //内存清零

memset(void*,int,int)               //空间设值 1地址23大小memset(my,NULL,sizeof(my));

memcpy(s,ct,n)                          //从ct处复制n个字符到s处,返回s

memmove(s,ct,n)                      //从ct处复制n个字符到s处,返回s,这里的两个段允许重叠

memcmp(cs,ct,n)                      //比较由cs和ct开始的n个字符,返回值定义同strcmp

memchr(cs,c,n)                          //在n个字符的范围内查寻c在cs中的第一次出现,如果找到,返回该位置的指针值,否则返回NULL

swab()                                           //把指定内存内每两个字节相交换,结果放置到另一块内存

memlcmp()                                  //比较两块内存间大小,大小写无关

calloc(size_t, size_t)                 //分配一块存储 n个大小为size的对象,初始化用0填充。失败NULL。就是比malloc有个初始化free释放

malloc(size_t size)                     //分配一块足以存放大小为size的存储,返回该存储块的地址,不能满足时返回NULL

realloc(void *p, size_t size)     //将p所指存储块调整为大小size,返回新块的地址。不能满足要求时返回NULL,此时原块不变

void free(void *p)                       //释放以前分配的动态存储块

 

 

 

目录

_chdir(char*)int                                   //设定当前工作目录成功返回0

_chdrive(int)int                                     //设定当前工作驱动器号

_getcwd(char*,int)char*                            //获得当前工作目录

_getdcwd(int,char*,int)char*          //获取当前驱动器

_getdrive()int                                        //获取驱动器

_mkdir(char*)int                                  //建立新目录

_rmdir(char*)int                                  //删除目录

_searchenv(char*,char*,char*)      //在环境变量中查找文件

 

文件

打开的文件分两种,一种是非缓冲区文件,一种是缓冲区文件

1.非缓冲文件系统:低级IO,是系统级的输入输出,它不设文件结构体指针,只能读写二进制文件,但效率高、速度快

2.缓冲文件系统:在内存开辟一个“缓冲区”,为程序中的每一个文件使用,执行速度就快、效率高。

 

是系统调用返回的是文件句柄,文件的句柄是文件在文件描述副表里的索引,fopen是C的库函数,返回的是一个指向文件结构的指针。文件描述符,无缓冲操作

2.fopen用来打开普通文件,open主要用于设备文件。3.fopen是纯库函数, open实际上是一个系统调用,当然是被wrapper到库函数中去了。

 

_chsize(int,long)int                             //改变文件大小参1打开的文件参2新大小返回文件大小非0表示出错

_filelength(int)long                              //文件长度

_fstat(int,stat*)int                              //获取文件打开信息,成功返回0

_isatty(int)int                                        //确定句柄是否与一个设备相连

_locking(int,int,long)int                      //锁定或解锁文件开始的指定长度

_setmode(int,int)int                           //设置打开文件方式

_open_osfhandle(long,int)int           //将文件句柄映射成为C的流文件

_get_osfhandle(int)long                    //将C的流文件映射成为文件句柄

 

_access(char*,int)int                          //检测文件能否以指定方式打开或目录是否存在

_chmod(char*,int)int                          //改变文件访问权限

_fullpath(char*,char*int)char*        //相对路径转换成完整路径

_makepath(char*,char*,char*,char*)    //用4个组成成分建立一个路径字符串

_mktemp(char*)char*                       //返回一个临时文件路径传入namexxxxxx

_splitpath(char*,char*,char*,char*,char*)//将一个路径分解成4个组成成分

remove(char*)                                                        //删除文件路径

rename()                                                //改名

_unlink()                                                 //删除由filename指定的文件。

_umask()                                                //设置创建文件时自动设置的属性掩码

_stat()                                                     //获取path指定的有关文件或目录的信息,将它们存储在buffer所指的结构中。

 

fopen(char,char)FILE                          //打开文件

_fsopen()                                                //打开与该文件共享的流并返回指向打开文件

_open(char*,int)int                             //打开文件并返回文件描述符

_sopen()                                                 //打开包含文件共享的文件并返回文件描述符

_pipe()                                                    //创建读写管道

freopen()                                                //重新分配一个文件指针

 

_fdopen()

_fileno()

_get_osfhandle()

_open_osfhandle()


  相关解决方案