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>