zoukankan      html  css  js  c++  java
  • 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);
    
        }
    }; 
    带女朋友搬家新家条件不好,累到女朋友了,让女朋友受苦了,特此明志:每天学习,明年这个时候(20190812)让女朋友住上大房子,永远年轻,永远热泪盈眶,很多人都是这样,他们都把自己当成身在梦中一样,浑浑噩噩地过日子,只有痛苦或爱或危险可以让他们重新感到这个世界的真实。
  • 相关阅读:
    atitit 提升数据库死锁处理总结
    CoreJava_线程并发(堵塞队列):在某个目录下搜索含有某keyword的文件
    HDU 4389——X mod f(x)(数位DP)
    POJ 1182 (经典食物链 /并查集扩展)
    【iOS-Android开发对照】 之 APP入口
    《Pro Android Graphics》读书笔记之第四节
    Android多个Module统一配置相同jar或库的版本号
    教你上传代码到码云(与github一样)
    解决本地项目推送到码云(github),上提示:failed to push some refs to ...
    android adb常用指令
  • 原文地址:https://www.cnblogs.com/make-big-money/p/12359381.html
Copyright © 2011-2022 走看看