16.替换空格
https://blog.csdn.net/jisuanji198509/article/details/95238355
于是想要将一个char转换为string只能找其他间接的方法了,这里提供几种:
//1、构造函数里有个string(size_t,char)
char x = 'a';
string s(1,x);
//2、string初始化没char,但是push_back可以
string s;
s.push_back(x);
//3、string可以由char*初始化
char xx[2] = {x,0};
string s(xx)
题解:链接:https://www.nowcoder.com/questionTerminal/4060ac7e3e404ad1a894ef3e17650423
来源:牛客网
分析:先转为string,然后处理完成后再转为char *。但不是以返回值的形式,还要利用好原来的空间,用strcpy实现之。
处理过程循环查找,每次找到就替换,且把每次的找到的结果当成下一次的参数,避免重复从头查找。
代码
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 ret=s.c_str();
strcpy(str,ret);
}
};
https://www.cnblogs.com/ryanzheng/p/8998047.html
我们经常会使用C和C++的混合编程,在某些情况下,需要将C++的string,转换成char* 的字符串。下面说两种可行的方法,作为总结。
1. data();
如:
string str="abc";
char*p=(char*)str.data();
2.c_str();
如:
string str="adcd";
char *p=(char*)str.c_str();
暂时就记这两种吧,简单而且差不多够用了。
class Solution { public: void replaceSpace(char *str,int length) { // if(str == NULL) return ; string sd; string res(str);//s()将char* 变成string for(int i=0;i<res.length();i++) { if (res[i] == ' ') sd += "%20"; else sd += res[i]; } char *ret= (char *)sd.c_str();//将string转换成char * strcpy(str,ret); } };
函数关键字:strcpy
使用格式:char* strcmp(char* buffer,char*str)
功 能: 把从str地址开始且含有NULL结束符的字符串复制到以buffer开始的地址空间,buffer地址空间中必须有足够的空间来容纳str的字符串
class Solution { public: void replaceSpace(char *str,int length) { // if(str == NULL) return ; string buffer; string res(str);//s()将char* 变成string for(int i=0;i<res.length();i++) { if (res[i] == ' ') buffer += "%20"; else buffer += res[i]; } char *ret= (char *)buffer.c_str();//将string转换成char * strcpy(str,ret); } };