码迷,mamicode.com
首页 > 其他好文 > 详细

string 容器

时间:2020-03-26 13:48:51      阅读:50      评论:0      收藏:0      [点我收藏+]

标签:compare   区别   默认   for   方法   sign   mail   turn   对比   

#include <iostream>
#include <string>
using namespace std;

//string的构造函数
/*
string();                          //创建一个空的字符串 例如: string str;
string(const char* s);            //使用字符串s初始化
string(const string& str);    //使用一个string对象初始化另一个string对象
string(int n, char c);           //使用n个字符c初始化 
*/
//string的构造函数
void test01()
{
    string s1; //默认构造 
    
    const char *str="hello world";
    string s2(str);
    
    cout << "s2 = "<<s2<<endl;
    
    string s3(s2);
    cout << "s3 = "<<s3<<endl;
    
    string s4(10,a);
    cout << "s4 = "<<s4<<endl;
    
 } 

//string的赋值操作
/*
string& operator=(const char* s);             //char*类型字符串 赋值给当前的字符串
string& operator=(const string &s);       //把字符串s赋给当前的字符串
string& operator=(char c);                      //字符赋值给当前的字符串
string& assign(const char *s);                  //把字符串s赋给当前的字符串
string& assign(const char *s, int n);     //把字符串s的前n个字符赋给当前的字符串
string& assign(const string &s);              //把字符串s赋给当前字符串
string& assign(int n, char c);                  //用n个字符c赋给当前字符串 
*/

void test02()
{
    string s1;
    s1="hello,world";
    cout<<"s1 = "<<s1<<endl;
    
    string s2;
    s2=s1;
    cout<<"s2 = "<<s2<<endl;
    
    string s3;
    s3=a;
    cout<<"s3 = "<<s3<<endl;
    
    string s4;
    s4.assign("hello c++");
    cout<<"s4 = "<<s4<<endl;
    
    string s5;
    s5.assign("hello c++",5);
    cout<<"s5 = "<<s5<<endl;
    
    string s6;
    s6.assign(s5);
    cout<<"s6 = "<<s6<<endl;
    
    string s7;
    s7.assign(10,w);
    cout<<"s7 = "<<s7<<endl;
    
    
}

//字符串拼接
/*
string& operator+=(const char* str);                   //重载+=操作符
string& operator+=(const char c);                         //重载+=操作符
string& operator+=(const string& str);                //重载+=操作符
string& append(const char *s);                               //把字符串s连接到当前字符串结尾
string& append(const char *s, int n);                 //把字符串s的前n个字符连接到当前字符串结尾
string& append(const string &s);                           //同operator+=(const string& str)
string& append(const string &s, int pos, int n);//字符串s中从pos开始的n个字符连接到字符串结尾
*/

void test03()
{
    string s1="";
    s1+="爱玩游戏";
    cout << "s1 = "<< s1 <<endl;
    
    s1 +=:;
    cout << "s1 = "<< s1 <<endl;
    
    string s2="Lol Dnf";
    s1+=s2;
    cout << "s1 = "<< s1 <<endl;
    
    string s3="I";
    s3.append("love");
    cout <<"s3 = "<<s3<<endl;
    
    s3.append("game abcde",4);
    cout <<"s3 = "<<s3<<endl;
    
    s3.append(s2);
    cout <<"s3 = "<<s3<<endl;
    
    s3.append(s2,0,3);//截取s2字符串,参数2,从那个位置开始,参数3,截取字符个数 
    cout <<"s3 = "<<s3<<endl;
    
}
//string查找和替换
/*
int find(const string& str, int pos = 0) const;              //查找str第一次出现位置,从pos开始查找
int find(const char* s, int pos = 0) const;                     //查找s第一次出现位置,从pos开始查找
int find(const char* s, int pos, int n) const;               //从pos位置查找s的前n个字符第一次位置
int find(const char c, int pos = 0) const;                       //查找字符c第一次出现位置
int rfind(const string& str, int pos = npos) const;      //查找str最后一次位置,从pos开始查找
int rfind(const char* s, int pos = npos) const;              //查找s最后一次出现位置,从pos开始查找
int rfind(const char* s, int pos, int n) const;              //从pos查找s的前n个字符最后一次位置
int rfind(const char c, int pos = 0) const;                      //查找字符c最后一次出现位置
string& replace(int pos, int n, const string& str);      //替换从pos开始n个字符为字符串str
string& replace(int pos, int n,const char* s);                 //替换从pos开始的n个字符为字符串s
*/

//查找 
void test04()
{
    string s1="abcdefg";
    
    int pos=s1.find("de"); //没有返回-1
    if(pos==-1)
    {
        cout<<"未找到"<<endl;
     }
     else
     {
         cout <<"找到了"<<"s1 = "<<pos<<endl;
      } 
    //rfind 和find的区别
    //rfind从右往左查,但是下标依然是从左往右 find从左往右 
    pos =s1.rfind("de");
    cout << "pos = "<<pos<<endl;
    
    
 } 
//替换 
void test05()
{
    string s1="abcdefg";
    //从1号位置起,三个字符,替换为"1111" 
    s1.replace(1,3,"1111");
    cout <<"s1 = "<<s1<<endl;
}

//字符串比较
/*
int compare(const string &s) const;  //与字符串s比较
int compare(const char *s) const;     //与字符串s比较 
比较方式:

字符串比较是按字符的ASCII码进行对比

= 返回   0

> 返回   1 

< 返回  -1
*/

void test06()
{
    string s1="xello";
    string s2="hello";
    
    if(s1.compare(s2)==0)
    {
        cout << "s1 等于 s2"<<endl;
    }
    else if(s1.compare(s2)>0)
    {
        cout <<"s1 大于 s2"<<endl; 
    }
    else
    {
        cout<<"s1 小于 s2"<<endl; 
    }
}

//string字符存取
/*
char& operator[](int n);     //通过[]方式取字符
char& at(int n);                    //通过at方法获取字符 
*/
void test07()
{
    string s1="hello";
    //cout <<"s1 = "<<s1<<endl;
    
    //1、通过[]访问的方式来访问单个字符
    for(int i=0;i<s1.size();i++) //字符串.size()获取字符串的长度
    {
        cout<<s1[i]<<" ";
     } 
    cout << endl;
    
    //2、通过at方式访问单个字符 
    for(int i=0;i<s1.size();i++)
    {
        cout << s1.at(i)<<" ";
    }
    cout << endl;
    
    //修改单个字符
    s1[0]=x; //xello;
    cout << "s1 = "<<s1<<endl;
    
    s1.at(1)=x; //xxllo
    cout <<"s1 = "<<s1<<endl; 
}
//string插入和删除
/*
string& insert(int pos, const char* s);                //插入字符串
string& insert(int pos, const string& str);        //插入字符串
string& insert(int pos, int n, char c);                //在指定位置插入n个字符c
string& erase(int pos, int n = npos);                    //删除从Pos开始的n个字符 
*/ 
void test08()
{
    string s1="hello";
    //插入
    s1.insert(1,"111");
    //h111ello
    cout << "s1 = "<<s1 <<endl; 
    
    //删除
    s1.erase(1,3);
    cout << "s1 = "<<s1 <<endl; 
     
}
//string子串 
void test09()
{
    string s1="abcdef";
    
    string subStr=s1.substr(1,3);
    cout << "subStr = "<<subStr<<endl;
}
//实用操作
void test10()
{
    string email="zhangsan@sina.com";
    //从邮件地址中 获取 用户名信息
    
    int pos = email.find("@"); 
    
    string userName=email.substr(0,pos);
    cout <<userName << endl;
    
 } 
int main(void)
{
    test01();
    test02();
    test03();
    test04();
    test05();
    test06();
    test07();
    test08();
    test09();
    test10();
    return 0;
}

 

string 容器

标签:compare   区别   默认   for   方法   sign   mail   turn   对比   

原文地址:https://www.cnblogs.com/Knightl8/p/12573887.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!