C字符串的小问题

来源:互联网 发布:鸿合展示台淘宝 编辑:程序博客网 时间:2024/06/07 03:24

string与char *、char[]之间的转换

提示

string可以被看成是以字符为元素的一种容器。字符构成序列(字符串)。有时候在字符序列中进行遍历,标准的string类提供了STL容器接口。具有一些成员函数比如begin()、end(),迭代器可以根据他们进行定位。
与char 不同的是,string不一定以NULL('\0')结束。string长度可以根据length()得到,string可以根据下标访问。所以,不能将string直接赋值给char 

string转换成char *

string有2个函数可以将string直接转换成const char *类型。
一个是.c_str(),一个是data成员函数。

string s1 = "abcdeg";const char *c_s1 = s1.c_str();const char *c_s2 = s1.data();

这种方法只能转换成const char,如果去掉const编译不能通过。
如果要转换成char
,可以用string的一个成员函数copy实现。

string s1 = "abcdefg";char *c_s1;int len = s1.length();c_s1 = (char *)malloc((len+1)*sizeof(char));s1.copy(c_s1,len,0);

char *和char []转换成string

这种方式可以直接赋值:

string s;char *p = "abcdegf";s = p;

字符串操作――得到没有路径的文件名的小程序

给定一个文件的绝对路径,得到没有路径目录的文件名
主要思路是定义一个指向该字符串的char指针p,遍历整个字符串,当遇到'/'或'\'的时候用filename_withoutpath指针变量记录下位置,直到遍历完整个字符串,输出的filename_withoutpath所指向的首地址就是文件名的起始位置。

char* filename_withoutpath = NULL;char* p = NULL;p = filename_withoutpath = filename_absolutepath;while ((*p) != '\0'){    if (((*p)=='/') || ((*p)=='\\'))        filename_withoutpath = p+1;    p++;}\\filename_withoutpath指向的位置就是文件名的首地址\\如果要得到该文件所在的路径的话,可以:\\*filename_withoutpath = '/0';\\则filename_absolutepath即得到该文件的路径

转载请注明作者Jason Ding及其出处
Github博客主页(http://jasonding1354.github.io/)
CSDN博客(http://blog.csdn.net/jasonding1354)
简书主页(http://www.jianshu.com/users/2bd9b48f6ea8/latest_articles)

0 0