C++中字符串的表示与转换

转换总结

1.char*string:可以直接赋值。

2.char[]string:可以直接赋值。

3.char*char[]:不能直接赋值,可以循环char*字符串逐个字符赋值,也可以使用strcpy_s等函数。

4.stringchar[]:不能直接赋值,可以循环char*字符串逐个字符赋值,也可以使用strcpy_s等函数。

5.stringchar*:调用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的转换 此文描述详尽,记于此便于查阅。

猜你喜欢

转载自www.cnblogs.com/clwsec/p/11489033.html