1.string
在c++中string是一个已经封装好的类,我们可以直接使用他,且使用十分方便,能够做到许多c语言中字符串做不到的事情.
1.string直接可以直接赋值.
string n("hello");
string n1("world");
n=n1;
而c语言是无法直接做到的.
我们来模拟string的底层实现看看.
#include <iostream>
#include <cstring>
using namespace std;
class String{
private:
char *m_str;
public:
String(char* str=""):m_str(strcpy(new char[str?strlen(str)+1:1],str?str:"")){}
String(const String& s):m_str(strcpy(new char[strlen(s.m_str)+1],s.m_str)){}
String& operator=(const String& s){
if(this != &s){
String mid(s);
swap(m_str,mid.m_str);
}
return *this;
}
~String(void){
if(m_str!=NULL){
delete[] m_str;
}
m_str = NULL;
}
public :
int len()const{
return strlen(m_str);
}
const char* c_str()const{
return m_str;
}
char& operator[](int index){
return m_str[index];
}
const char& operator[](int index)const{
return m_str[index];
}
friend ostream& operator<<(ostream& os,const String& s){
os << s.c_str() << endl;
return os;
}
friend istream& operator>>(istream& is,String& s){
is >> s.m_str;
return is;
}
};
int main(){
String s;
cin >> s;
cout << s << endl;
cout << s.len() << endl;
cout << s[3] << endl;
return 0;
}
|