string和stringstream类

1、string类(拷贝,构造,赋值)函数的实现

 class String{
public:
    String();     //默认构造函数
    String(const char * str);   //普通构造函数
    String(const String &str);        //拷贝构造函数
    ~String(void);           //析构函数
    String &operator=(const String &str);   //赋值函数
    int output(){
        cout<<m_data<<endl;
        return 0;
    }
private:
    char *m_data;
};
String::String(){}
String::String(const char * str){
    if(str==NULL){
        m_data=new char[1];
       // m_data[0]='\0';
       *m_data='\0';
    }
    else
    {
        m_data=new char[strlen(str)+1];
        strcpy(m_data,str);
    }
}
String::String(const String &str){
    int length=strlen(str.m_data);
    m_data=new char[length+1];
    strcpy(m_data,str.m_data);
}
String &String::operator =(const String &str){
    if(this==&str){
        return *this;
    }
    delete []m_data;
    int length=strlen(str.m_data);
    m_data=new char[length+1];
    strcpy(m_data,str.m_data);
    return *this;
}
String::~String(void){
    delete []m_data;
}

2、string类的常用操作函数


int size()const;        //返回当前字符串的大小
int length()const;       //返回当前字符串的长度
bool empty()const;        //当前字符串是否为空

 getline(istream &in,string &s);用于从输入流in中读取字符串到s中,以换行符'\n'分开。

int find(const char *s, int pos = 0) const;//从pos开始查找字符串s在当前串中的位置

string类提供向前和向后的迭代器:iterator操作(类似于指针)

string::iterator或string::const_iterator声明迭代器变量,const_iterator不允许改变迭代的内容。

iterator begin();                //返回string的起始位置

iterator rend();                    //返回string第一个字符位置的前面

 3、stringstream类 stringstream 类提供的函数,将数字化转化为字符串。

[1] 头文件 include<sstream>

[2] 预定的格式将程序中的数据保存在一个string 中 std::stringstream stringStream; stringStream<<"输入内容"<<std::endl; std::string str=stringStream.str();(stringStream.str("") 真正的清空操作)

[3] 实现类型转换


3、stringstream注意事项

【1】、构造函数

 //ostr.str("abc");//如果构造的时候设置了字符串参数,那么增长操作的时候不会从结尾开始增加,而是修改原有数据,超出的部分增长。

  当构造的时候对象内已经存在字符串数据的时候,那么增长操作的时候不会从结尾开始增加,而是修改原有数据,超出的部分增长

【2】、对象调用函数

需要包含头#include <iomanip>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值