char[],char*,string間変換


テキストリンク:https://blog.csdn.net/yzhang6_10/article/details/51164300
  • char[]とchar*間の変換
  • char[]転char*:直接付与すれば
  • char*回転char[]:文字コピー実装、付与操作不可
  • charとconst charの間の変換
  • const char転送char:コピー実装、付与できない
  • char回転const char:直接付与
  • char*とstring間の変換
  • char*回転string:1)直接付与;2)構造変換実現
  • string char*:付与操作(注意型変換)
  • char[]とstring間の変換
  • char[]回転string:1)直接付与;2)構造変換実現
  • string回転char[]:コピー実装、
  • 直接付与できない
  • まとめ
  • char[]とchar*の変換
    char[]char*:直接値を付与すればよい
    // char[]  char *
    char str[] = "lala";
    char *str1 = str;
    cout << str1 << endl;
    

    char*転char[]:文字コピー実装、付与操作不可
    // char *   char []
    const char *st = "hehe";
    char st1[] = "lalalala";
    strncpy(st1, st, strlen(st) + 1);    //    1   
    // tp = temp;                        //  ,     
    cout << st1 << endl; 
    

    charとconst charの間の変換
    const char転char:コピー実装、付与不可
    // const char * char *
    const char *st = "lala";
    //         
    //char *st1 = st;           // (        ) 
    //cout << st1 << endl;
    //       ,           
    char *ncstr = new char[strlen(st) + 1];
    strcpy(ncstr, st);
    cout << ncstr << endl; 
    

    char回転const char:直接付与
    // char * const char * 
    char *st = "hehe";         // (      )
    const char *st1 = st;
    cout << st1 << endl;
    

    char*とstring間の変換
    char*回転string:1)直接付与;2)構造転換実現
    // char*   string
    // (  ,  char *  ,     ,     const  ,       ) 
    const char *st = "hello";
    //      
    string st1 = st;
    cout << st1 << endl;
    //      
    string s1(st, st + strlen(st));
    cout << s1 << endl;
    //   const char *    
    st = "lalala";
    cout << st << endl; 
    

    string char*:付与操作(タイプ変換に注意)
    // string char *
    string st = "My test";
    //char *st1 = st;           //        
    //char *st1 = st.c_str();   //       
    char *st1 = const_cast(st.c_str()) ;
    cout << st1 << endl; 
    

    char[]とstring間の変換
    char[]回転string:1)直接付与;2)構造転換実現
    // char[]   string 
    char st[] = "hello";   
    //        
    string st1 = st;
    cout << st1 << endl;
    //      
    string st2(st, st + strlen(st));
    cout << st2 << endl;
    

    string回転char[]:コピー実装、直接値付与不可
    // string char []
    string ts = "My test1";
    //char ts1[] = ts;          //   
    //char ts1[] = const_cast(ts.c_str());   //    
    char ts1[] = "lalallalalaaaa";
    strncpy(ts1, ts.c_str(), ts.length() + 1);       //   ,    1,      '\0' 
    cout << ts1 << endl; 
    return 0;
    

    まとめ
    char[]文字配列と他のタイプの変換に関連し、一般的にはコピーが必要であり、直接値を割り当てることはできません.char[]とchar*は、新しいstringを構築することによってstringへの変換を完了することができます.char*変換に関しては、タイプが一致していることに注意し、constの使用に注意する必要があります.