转换总结
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的转换 此文描述详尽,记于此便于查阅。