这道题是一道很简单的题目,但是涉及的知识点,尤其是C和C++之间的小语法,自己很不清楚。记录下来
1. string 转 char*
string res = "res"; char* str; strcpy(str,res.c_str());
如果是const char* 类型,可以用以下两种方法
const char* cstr = res.c_str();
或者 const char* cstr = res.data();
2.char*转string
char* str = "charStr"; string res= str; 直接赋值即可
3.string 转 char[]
string str = "sddd";
char cstr=[10];
int i;
for(i=0;i<str.length();i++){
cstr[i] = str[i]; }
cstr[i] = '\0'; //一定要记得在末尾加一个结束字符
4. char[] 转 string
char cstr[9] = "adfa";
string str = cstr; 直接赋值即可
5. strcpy函数:是一种C语言的标准库函数,strcpy把含有'\0'结束符的字符串复制到另一个地址空间,返回值的类型为char*。
原型声明:char *strcpy(char* dest, const char *src);
功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。
6. c_str()
语法:
const char *c_str();
c_str()函数返回一个指向正规C字符串的指针常量, 内容与本string串相同.
这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。
1.c_str是一个内容为字符串指向字符数组的临时指针;
2.c_str返回的是一个可读不可改的常指针;
注意:一定要使用strcpy()函数 等来操作方法c_str()返回的指针
最好不要这样: char* c; string s = "2312", c = s.c_str();
而应该是: strcpy(c,s.c_str()); 这样才不会出错。 因为s这个对象会被析构掉
题目 code
网友评论