parent
e22d05f823
commit
847ec0fb15
@ -0,0 +1,6 @@ |
||||
cmake_minimum_required(VERSION 3.21) |
||||
project(work20220407) |
||||
|
||||
set(CMAKE_CXX_STANDARD 14) |
||||
|
||||
add_executable(work20220407 main.cpp string/String.cpp string/String.h) |
@ -0,0 +1,26 @@ |
||||
#include <iostream> |
||||
#include "string/String.h" |
||||
|
||||
|
||||
using namespace std; |
||||
|
||||
int main() { |
||||
String s1("Help!"),s2("Good!"),s3(s2),s4,s5; |
||||
cout<<"s1="<<s1<<endl; |
||||
s3="Hello!"; |
||||
cout<<"s3="<<s3<<endl; |
||||
s3=s2; |
||||
cout<<"s3="<<s3<<endl; |
||||
s3+=s2; |
||||
cout<<"s3="<<s3<<endl; |
||||
cin>>s4; |
||||
cout<<"s4="<<s4<<endl; |
||||
cout<<"s4length="<<s4.Length()<<endl; |
||||
|
||||
/*s5=s3+s4;
|
||||
cout<<"s5="<<s5<<endl; |
||||
s5[0]='g'; |
||||
cout<<"s5="<<s5<<endl; |
||||
cout<<"strlen(s5)="<<s5.Length()<<endl;*/ |
||||
cout<<boolalpha<<(s3 == s1)<<endl; |
||||
} |
@ -0,0 +1,71 @@ |
||||
//
|
||||
// Created by lenfrex on 2022/4/4.
|
||||
//
|
||||
|
||||
#ifndef WORK20220401_STRING_H |
||||
#define WORK20220401_STRING_H |
||||
|
||||
#include <iostream> |
||||
#include <string> |
||||
#include "utility" |
||||
|
||||
using namespace std::rel_ops; |
||||
|
||||
class String { |
||||
private: |
||||
// 字符数组做字符串
|
||||
char *data = nullptr; |
||||
|
||||
// 字符串实际长度
|
||||
int length = 0; |
||||
|
||||
// 已分配的字符数量
|
||||
int allocSize = 0; |
||||
|
||||
void copyData(const char *source, int sourceLength); |
||||
|
||||
bool equals(const char *source, int sourceLength) const; |
||||
|
||||
void addString(const char *source, int sourceLength); |
||||
public: |
||||
explicit String(int size); |
||||
|
||||
String(const char *data, int length); |
||||
|
||||
explicit String(const char *source); |
||||
|
||||
String(const String &source); |
||||
|
||||
String(); |
||||
|
||||
~String(); |
||||
|
||||
bool operator==(const String &source) const; |
||||
|
||||
bool operator==(const char *source) const; |
||||
|
||||
bool operator>(const String &compareString) const; |
||||
|
||||
String &operator+=(const String &source); |
||||
|
||||
String &operator+=(const char *source); |
||||
|
||||
String &operator=(const String &source); |
||||
|
||||
String &operator=(const char *source); |
||||
|
||||
String &operator+(const char *source); |
||||
|
||||
String &operator+(const String &source); |
||||
|
||||
friend std::ostream &operator<<(std::ostream &outputStream, const String &source); |
||||
|
||||
friend std::istream &operator>>(std::istream &outputStream, String &source); |
||||
|
||||
char operator[](int i); |
||||
|
||||
int Length() const; |
||||
|
||||
}; |
||||
|
||||
#endif //WORK20220401_STRING_H
|
Loading…
Reference in new issue