c++ string


/*
11.12
string是c++风格的字符串,而string本质上是一个类
string和char*的区别
char*是一个指针
string是一个类,类内部封装了char*管理这个字符串,是一个char*型的容器
string的特点:
string类内部封装了很多成员方法
例如:查找:find 拷贝:copy 删除:delete 插入:insert
string管理char*所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责
总结:string的多种构造方法没有可比性,灵活使用即可
*/

/*
#include<iostream>
#include<string>
using namespace std;
void test01()
{
    //string ();创建一个空的字符串
    string s1;//默认构造 
    //string(const char* s)使用字符串初始化
    const char* str ="hello world";
    string s2(str);
    cout << "s2=" << s2 <<endl;
    //string(const string str) 使用一个string对象初始化另一个string对象
    string s3=(s2);
    cout << "s3=" << s3 <<endl;
    //string(int n,char c)使用n个字符c初始化
    string s4(10,'a');
    cout << "s4=" << s4 <<endl;
}
int main()
{
    test01();
    system("pause");
    return 0;
}
*/

/*
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赋给当前字符串
*/

/*
#include<iostream>
#include<string>
using namespace std;
void test01()
{
    string str1;
    str1="abc";
    cout << "str1=" << str1 << endl;
    string str2;
    str2=str1;
    cout << "str2=" << str2 << endl;
    string str3;
    str3='x';
    cout << "str3=" << str3 << endl;
    string str4;
    str4.assign("xyzc++");
    cout << "str4=" << str4 << endl;
    string str5;
    str5.assign("xyzc++",5);
    cout << "str5=" << str5 << endl; //xyzc+
    string str6;
    str6.assign(str5);
    cout << "str6=" << str6 << endl;
    string str7;
    str7.assign(10,'6');
    cout << "str7=" << str7 << endl;
}
int main()
{
    test01();
    system("pause");
    return 0;
}
*/

/*
string 字符串拼接:实现在字符串末尾拼接字符串
函数原型:
string& operator+=(const chan* 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个字符连接到字符串结尾
*/
/*
#include<iostream>
#include<string>
using namespace std;
void test01()
{
    string s1="我";
    s1+="喜欢音乐";
    cout << s1 << endl;
    s1+="~";
    cout << s1 << endl;
    string s2="abcccc";
    s1+=s2;
    cout << s1<<endl;
    
    string s3="I";
    s3.append(" love");
    cout << s3 << endl;
    s3.append("abcdefg",5);
    cout << s3<< endl;
    s3.append(s2);
       cout << s3 << endl;
       s3.append(s2,0,3);
    cout << s3 << endl;
}
int main()
{
    test01();
    system("pause");
    return 0;
}
*/


/*
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 pos0)    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
*/

/*
#include<iostream>
#include<string>
using namespace std;
void test01()
{
    //查找
    //find从左往右找
    string s1="abcdefghde";
    int pos =s1.find("de");
    cout << "pos=" << pos << endl;//3
    int pos2=s1.find("iv");
    if(pos2==-1)
    {
        cout << "未找到" << endl;
    }
    else
    {
        cout << "找到pos2=" << pos2 << endl;
    }
    //rfind从右往左找
    int pos3 =s1.rfind("de");
    cout << "pos3=" << pos3 << endl;//8
    
}

//替换
void test02()
{
    string s1="abcdefghigk";
    s1.replace(1,3,"11111");//从1号位置起3个字符替换成11111
    cout << "s1=" << s1 <<endl;//s1=a11111efghigk
}
int main()
{
    //test01();
    test02();
    system("pause");
    return 0;
}
*/

/*string 字符串比较
=返回0
>返回1
<返回-1
函数原型:
int compare(const string &s)const;   //与字符串s比较
int compare(const char *s) const;     //与字符串s比较
*/
/*
#include<iostream>
#include<string>
using namespace std;
void test01()
{
    string s1="abcd";
    string s2="bbcd";
    if(s1.compare(s2)==0)
    {
        cout << " 相等 " << endl;
    }
    else if(s1.compare(s2)>0)
    {
        cout << " s1>s2 " << endl;
    }
    else 
    {
        cout << " s1<s2 " << endl;
    }
}
int main()
{
    test01();
    system("pause");
    return 0;
}
*/


/*
string 字符串存取
string中单个字符存取方式有两种
char& operator[](int n);       //通过[]方式取字符    
char& at(int n);               //通过at方法获取字符
*/
/*
#include<iostream>
#include<string>
using namespace std;
void test01()
{
    string s1="abcdefghijk";
    for(int i=0;i<s1.size();i++)
    {
        cout << s1[i] << " ";
    }
    cout << endl;
        for(int i=0;i<s1.size();i++)
        {
            cout << s1.at(i) << " ";
        }
    cout << endl;
    s1[0]='x';
    cout << s1 << endl;
    s1.at(1)='x';
    cout << s1 << endl;
    
}
int main()
{
    test01();
    system("pause");
    return 0;
}
*/

/*
string中的插入和删除
函数原型:
string& insert(int pos, const char*s);         //插入字符串    
string& insert(int pos, const string& str);      //插入字符串    
string& insert(int pos, int n,charc);          //在指定位置插入n个字符c    
string& erase(int pos, int n=npos);             //删除从Pos开始的n个字符
*/
/*
#include<iostream>
#include<string>
using namespace std;
void test01()
{
    string s1="abcdef";
    s1.insert(1,"11111");
    cout << s1 << endl;
    s1.erase(7,3);
    cout << s1 << endl;
}
int main()
{
    test01();
    system("pause");
    return 0;
}
*/

/*
string字串:从字符中获取想要的子串
函数原型:
string substr(int pos = 0, int n = npos) const;    //返回由pos开始的n个字符组成的字符串
*/
/*
#include<iostream>
#include<string>
using namespace std;
void test01()
{
    string s1="abcdefgh";
    string substr=s1.substr(1,3);
    cout << substr <<endl;
}

void test02()
{
    string email="zhangsan@sina.com";
    //从邮件地址中获取 用户名信息
    int pos =email.find("@");
    string username=email.substr(0,pos);
    cout << username<<endl;
}
int main()
{
//    test01();
    test02();
    system("pause");
    return 0;
}
*/

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值