首页 > 其他 > 详细

16.替换空格

时间:2020-02-24 23:13:07      阅读:70      评论:0      收藏:0      [点我收藏+]

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);

    }
}; 

 

16.替换空格

原文:https://www.cnblogs.com/make-big-money/p/12359381.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!