首页 > 代码库 > C字符串的小问题
C字符串的小问题
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)
C字符串的小问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。