char*,char[], string 之间互相转换

char[] 转 char*

char ch[]="abcdef";
char *s = ch;
cout << s << endl; // 这不是打印地址,而是打印s的内容

char*转char[]

#include <string>
#include <iostream>

using namespace std;

int main() {

    char *s = (char *) "aabbcc";
    char ch[100];
    size_t size = sizeof(char) * strlen(s) + 1;
    strncpy_s(ch, s, size);

    cout << ch << endl;

    return 0;
}

string转char[]

#include <string>
#include <iostream>

using namespace std;

int main() {

    string s = "abc";
    // to char[]
    const size_t chSize = 128;
    char ch[chSize];
    int i = 0;
    strncpy_s(ch, chSize, s.c_str(), s.size());
    cout << ch << endl;

    // to const char*
    const char *aa = s.c_str();
    cout << aa << endl;

    return 0;
}

char[]转string

#include <string>
#include <iostream>

using namespace std;

int main() {


    string s;
    char ch[10] = "abcdef";
    s = ch; // 简单粗爆,

    string b(ch);   // 构造函数

    string c;
    c.append(ch); // append

    cout << s << endl;
    cout << b << endl;
    cout << c << endl;
}

string转char*

#include <string>
#include <iostream>

using namespace std;

int main() {


    // 方法一
    {
        string s = "aa";
        char *ch;
        ch = (char *) s.c_str();
        cout << ch << endl;
    }

    
    // 方法二
    {
        string s = "bb";
        char *ch;
        s += '\0';
        ch = (char *) s.data();
        cout << ch << endl;
    }
}

char*转string

#include <string>
#include <iostream>

using namespace std;

int main() {

    // 方法一
    {
        string s;
        char *ch = (char *) "abcdef";
        s = ch;

        cout << s << endl;
    }

    // 方法二
    {
        string s;
        char *ch = (char *) "abcdef";
        s = ch;
        s.assign(ch);

        cout << s << endl;
    }
}

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注