string类的成员函数c_str()
c_str()函数原型:const char *c_str(void)
c_str()函数功能: 当程序用到atoi()、strcpy()这类的C函数时要求参数为char*型,就要将string类字符串转换成char型字符串;(string是个类,char是个常规类型)
c_str()函数实现:
1 #include <iostream> 2 using namespace std; 3 4 //定义一个简易的string类,实现将传进来的任意类型的字符串 储存到 char*指针指向的空间里 5 class my_string 6 { 7 public: 8 my_string(const char* str = nullptr) 9 { 10 if(nullptr == str) //写判断语句时常量要写在前面,以减少出错(万一少些一个 '=' 系统会报错) 11 { 12 data = nullptr; 13 } 14 else 15 { 16 data = new char[strlen(str)+1]; //+1 是因为有 ' ' 17 strcpy(data,str); //只能strcpy(char* dest,const char* src)这一种参数形式 18 } 19 } 20 const char* c_str(void) 21 { 22 return data; 23 } 24 private: 25 char* data; // 用于储存 char* 字符串 26 }; 27 int main(void) 28 { 29 my_string s("hello world!"); 30 cout << s.c_str() << endl; 31 return EXIT_SUCCESS; 32 }
上式代码中有提到的strcpy,
strcpy()函数原型:char* strcpy(char *dest, const char *src)
strcpy()函数功能:复制两个char型字符串,而且他们可以是空,但不可以指向一个地址不然达不到想要的效果(memcpy可以复制两个指向一个地址空间的变量/类/结构体)
strcpy()函数实现:
1 char *my_strcpy(char *dest, const char *src) 2 { 3 char *ret = dest; 4 while(( *(dest++) = *(src++) ) != '