zoukankan      html  css  js  c++  java
  • string 与 char 字符串区别-1

    string 与 char 字符串区别-1

    注意:这篇文章主要记录了有关string与char在使用中的几种情况。

    接受字符串常量

    在一般使用中向函数参数列表内直接写入字符串常量时,可以选择char与string接收

    char*指针

    内容输出

    void display(const char* aim)
    {
    	cout<<aim<<endl;
    }
    
    /*
    void display(char* aim)
    {//此时没有const修饰,会有警告
    	cout<<aim<<endl;
    }
    */
    
    int main()
    {
    	display("cycycycysdig");
    	return 0;
    }
    //输出:cycycycysdig
    

    长度计算

    void display(const char* aim)
    {
        int lenth=strlen(aim);
        cout<<lenth<<endl;
    }
    
    int main()
    {
    	display("cycycycysdig");
    	return 0;
    }
    //输出:12
    

    内容操作(这里尝试对字符串复制)

    void display(const char* aim)
    { 
    	int lenth=strlen(aim);
    	char temp[lenth+1];//要多一个位置
    	temp[lenth]='';//这一句是必不可少的
    	memcpy(temp,aim,sizeof(char)*lenth);//直接对区间内存复制
    	cout<<temp<<endl;
    }
    
    int main()
    {
    	display("cycycycysdig");
    	return 0;
    }
    //输出:cycycycysdig
    

    string容器

    string不仅仅操作方便,而且对C风格的字符串代码具有良好的适配

    直接string接收

    void display(string aim)
    {
        //之后的操作就十分方便了
    	int lenth=aim.size();//字符串长度
        cout<<lenth<<endl;
    }
    
    int main()
    {
    	display("cycycycysdig");
    	return 0;
    }
    //输出:12
    

    间接string接收

    void display(const char* aim)
    { 
    	string psd=aim;
        //直接接收了来自char指针字符串
    	cout<<psd<<endl;
    }
    
    int main()
    {
    	display("cycycycysdig");
    	return 0;
    }
    //输出:cycycycysdig
    

    string对char的良好的兼容性

    注意,string对char具有良好的兼容特性,这也说明了char对string的完全不兼容

    string转char字符串

    string的c_str()方法是完成这个功能的主要方法.但是有几点需要注意.

    int main()
    {
    	string aim;
    	aim="helloworld";
    	//
    	char* temp= new char[aim.size()+1];
    	strcpy(temp,aim.c_str());
    	cout<<temp<<endl;
    	return 0;
    }
    

    能够看到,c_str()方法产生的以''结尾的字符串会随着析构函数的调用而被回收。所以,一个正确的保留字符串的方案就是提前创建好合适长度的C字符串并使strcpy()函数复制得到备份。另外,string容器中还有其它的具有类似功能的方法:copy(),data().详细请问度娘.

    string在运算符上对char的兼容

    int main()
    {
    	string aim;
    	aim+="hello";
    	cout<<aim<<endl;//输出:hello
    	aim+='w';
    	aim+='o';
    	cout<<aim<<endl;//输出:hellowo
    	aim='q';
    	cout<<aim<<endl;//输出:q
    	aim="s";
    	cout<<aim<<endl;//输出:s
    	return 0;
    }
    

    这里能够反映出:string在+=运算符与=运算符上对常量字符常量字符串的兼容性

    int main()
    {
    	string aim;
    	char c[]="ddds";
    	aim+=c;
    	cout<<aim<<endl;//输出:ddds
        //
    	const char ch[]="asdgafg";
    	aim+=ch;
    	cout<<aim<<endl;//输出:dddsasdgafg
    	return 0;
    }
    

    一样的,对char字符串也很友好

    OK

  • 相关阅读:
    Spark Streaming ---没用
    spark-streaming笔记 ---没用
    zookeeper笔记 ---没用
    远程调试笔记 ---没用
    远程仓库
    git之时光机穿梭
    分布式版本控制系统 VS 集中式
    Map与WeakMap
    set与weakset
    Genarator生成器
  • 原文地址:https://www.cnblogs.com/savennist/p/12770595.html
Copyright © 2011-2022 走看看