1.char*转string:可以直接赋值。
2.char[]转string:可以直接赋值。
3.char*转char[]:不能直接赋值,可以循环char*字符串逐个字符赋值,也可以使用strcpy_s等函数。
4.string转char[]:不能直接赋值,可以循环char*字符串逐个字符赋值,也可以使用strcpy_s等函数。
5.string转char*:调用string对象的c_str函数或data函数或copy函数。
6.char[]转char*:直接赋值即可。
使用时,要对源格式和目标格式进行初始化。源格式赋值为具体的内容,目标格式赋值为空。

string,直接赋值。char[]变成其他,直接赋值。请实现一个函数,将一个字符串中的每个空格替换成%20。例如,当字符串为We Are Happy,则经过替换之后的字符串为We%20Are%20Happy。
来源:替换空格
class Solution {
public:
    void replaceSpace(char *str,int length) {
        string s(str);
        int i=0;
        while((i=s.find(' ', i)) > -1)
        {
            s.erase(i, 1);
            s.insert(i, "%20");
        }
      //auto自动识别变量类型
        auto res = s.c_str();
        strcpy(str, res);
    }
};
此题很简单,用python等一句便能通过。但是在C++中,关键在于函数所传的参数 char *str ,这是一个指针变量,主函数中应该是一个 char str[] 类型,需要通过此函数更改实参的值。所以最直接的方法便是通过指针遍历数组进行相应位置的修改,从而实现相关替换。
上面的代码使用的是字符串间的转换,最后通过strcpy(str, res),这样代码更简短一些。
注:要理清参数 char *str 的实参究竟是什么。
C++中string、char 、char[]、const char的转换 此文描述详尽,记于此便于查阅。
原文:https://www.cnblogs.com/clwsec/p/11489033.html