char[],char *,string的小动作

char[] 转char *

char str[] = "lala";
char *str1 = str;
cout << str1 << endl;

char *转char[]

    const char* st = "hello";
    char str[] = "world";
    strncpy(str,st,strlen(st)+1);
    // str = st; 错误
    cout<<str<<endl;

const char 转char :拷贝实现,不能进行赋值

    const char* st = "hello";
//    char* str = const_cast<char*>(str);
    char* str = new char[strlen(st)+1];
    strcpy(str,st);
    cout<<str<<endl;

char 转const char : 直接赋值

     char* st = "hello";
  //    const char* str = const_cast<const char*>(st);
      const char* str = st;
      cout<<str<<endl;

char *转string

      const char* st = "hello-----";
      string str = st; 
      cout<<str<<endl;
      st = "hahaha";
      string str1(st); 

string转char *

      string st = "world------";
  //    char* str = st; 错误
  #if 0
      const char* str = st.c_str();
      char* str1 = const_cast<char*>(str);
  #endif
      char* str1 = const_cast<char*>(st.c_str());
      cout<<str1<<endl;

      char *pout =(char *)malloc(_output.size());
      _output.copy(pout,_output.size(),0);                                                               
      write(m_fd,pout,_output.size());
      free(pout); 

char[]与string

      char st[] = "hello";
      string str = st; 
      cout<<str<<endl;
      string str1(st); // string str1(st,sizeof(st));
      cout<<str1<<endl;   

string 转 chart[]

      string st = "my test";
      char ts[] = "lalalalalalal";
      strncpy(ts,st.c_str(),st.length()+1);
      cout<<ts<<endl;

c_str与data区别

第一点:c_str()字符串后有'\0',而data()没有。
第二点: data 返回的数组(虽然是char* 但是和  c_str 还是有本质区别的)-----data 能解决一个问题 string 串中 包含 \0 情况的问题。结合size 方法就能随意访问返回的数据了.  注意他返回的是array 数组.

posted on 2021-05-30 18:04  lodger47  阅读(80)  评论(0)    收藏  举报

导航