Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "MyString.h"
- String::String(){
- string = new char[1];
- string[0] = '\0';
- }
- String::String(const char*_string){
- string = nullptr;
- setString(_string);
- }
- String::String(const char _string) {
- string = nullptr;
- setString(_string);
- }
- String::~String(){
- delete[]string;
- }
- String::String(const String& other){
- setString(other.getString());
- }
- String& String::operator=(const String& other){
- if (this == &other) {
- return *this;
- }
- setString(other.getString());
- return *this;
- }
- String& String::operator=(const char* other) {
- this->string = nullptr;
- setString(other);
- return *this;
- }
- char String:: operator[](int index) {
- if (index >= length() || index < 0 || empty()) {
- cout << "ERROR" << endl;
- return '0';
- }
- else {
- return string[index];
- }
- }
- String operator+(const String& left,const String& right) {
- cout << "length " << left.length() + right.length() << endl;
- char* sum = new char[left.length() + right.length()+1];
- int i_sum = 0;
- for (int i = 0;left.string[i] != '\0';i++, i_sum++) {
- sum[i_sum] = left.string[i];
- }
- for (int i = 0;right.string[i] != '\0';i++, i_sum++) {
- sum[i_sum] = right.string[i];
- }
- cout << i_sum << endl;
- sum[i_sum+1] = '\0';
- cout << sum;
- String result=sum;
- delete[] sum;
- return result;
- }
- bool operator==(const char* left,const String& right){
- return (strcmp(left, right.getString()) == 0);
- }
- bool operator==(const String& left, const String& right) {
- return (strcmp(left.getString(), right.getString()) == 0);
- }
- bool operator==(const String& left, const char* right) {
- return (strcmp(left.getString(), right) == 0);
- }
- //
- bool operator!=(const char* left, const String& right) {
- return (!(strcmp(left, right.getString()) == 0));
- }
- bool operator!=(const String& left, const String& right) {
- return (!(strcmp(left.getString(), right.getString()) == 0));
- }
- bool operator!=(const String& left, const char* right) {
- return (!(strcmp(left.getString(), right) == 0));
- }
- //
- bool operator>(const String& left,const String& right){
- for (int i = 0;left.getString()[i] != '\0' && right.getString()[i] != '\0';i++) {
- if (left.getString()[i] != right.getString()[i]) {
- if (left.getString()[i] > right.getString()[i]) {
- return true;
- }
- else {
- return false;
- }
- }
- }
- return false;
- }
- bool operator>(const char* left, const String& right) {
- for (int i = 0;left[i] != '\0' && right.getString()[i] != '\0';i++) {
- if (left[i] != right.getString()[i]) {
- if (left[i] > right.getString()[i]) {
- return true;
- }
- else {
- return false;
- }
- }
- }
- return false;
- }
- bool operator>(const String& left, const char* right) {
- for (int i = 0;left.getString()[i] != '\0' && right[i] != '\0';i++) {
- if (left.getString()[i] != right[i]) {
- if (left.getString()[i] > right[i]) {
- return true;
- }
- else {
- return false;
- }
- }
- }
- return false;
- }
- //
- bool operator<(const String& left, const String& right) {
- for (int i = 0;left.getString()[i] != '\0' && right.getString()[i] != '\0';i++) {
- if (left.getString()[i] != right.getString()[i]) {
- if (left.getString()[i] < right.getString()[i]) {
- return true;
- }
- else {
- return false;
- }
- }
- }
- return false;
- }
- bool operator<(const char* left, const String& right) {
- for (int i = 0;left[i] != '\0' && right.getString()[i] != '\0';i++) {
- if (left[i] != right.getString()[i]) {
- if (left[i] < right.getString()[i]) {
- return true;
- }
- else {
- return false;
- }
- }
- }
- return false;
- }
- bool operator<(const String& left, const char* right) {
- for (int i = 0;left.getString()[i] != '\0' && right[i] != '\0';i++) {
- if (left.getString()[i] != right[i]) {
- if (left.getString()[i] < right[i]) {
- return true;
- }
- else {
- return false;
- }
- }
- }
- return false;
- }
- //
- bool operator>=(const String& left, const String& right) {
- for (int i = 0;left.getString()[i] != '\0' && right.getString()[i] != '\0';i++) {
- if (left.getString()[i] != right.getString()[i]) {
- if (left.getString()[i] > right.getString()[i]) {
- return true;
- }
- else {
- return false;
- }
- }
- }
- return true;
- }
- bool operator>=(const char* left, const String& right) {
- for (int i = 0;left[i] != '\0' && right.getString()[i] != '\0';i++) {
- if (left[i] != right.getString()[i]) {
- if (left[i] > right.getString()[i]) {
- return true;
- }
- else {
- return false;
- }
- }
- }
- return true;
- }
- bool operator>=(const String& left, const char* right) {
- for (int i = 0;left.getString()[i] != '\0' && right[i] != '\0';i++) {
- if (left.getString()[i] != right[i]) {
- if (left.getString()[i] > right[i]) {
- return true;
- }
- else {
- return false;
- }
- }
- }
- return true;
- }
- //
- bool operator<=(const String& left, const String& right) {
- for (int i = 0;left.getString()[i] != '\0' && right.getString()[i] != '\0';i++) {
- if (left.getString()[i] != right.getString()[i]) {
- if (left.getString()[i] < right.getString()[i]) {
- return true;
- }
- else {
- return false;
- }
- }
- }
- return true;
- }
- bool operator<=(const char* left, const String& right) {
- for (int i = 0;left[i] != '\0' && right.getString()[i] != '\0';i++) {
- if (left[i] != right.getString()[i]) {
- if (left[i] < right.getString()[i]) {
- return true;
- }
- else {
- return false;
- }
- }
- }
- return true;
- }
- bool operator<=(const String& left, const char* right) {
- for (int i = 0;left.getString()[i] != '\0' && right[i] != '\0';i++) {
- if (left.getString()[i] != right[i]) {
- if (left.getString()[i] < right[i]) {
- return true;
- }
- else {
- return false;
- }
- }
- }
- return true;
- }
- void String::setString(const char*_string) {
- delete[] this-> string;
- this->string = new char[strlen(_string) +1];
- strcpy_s(this->string, strlen(_string) + 1, _string);
- }
- void String::setString(const char _string) {
- delete[] string;
- string = new char[2];
- string[0] = _string;
- string[1] = '\0';
- }
- const char* String::getString()const {
- return string;
- }
- void String::append(const char* add) {
- char* result = new char[strlen(string) + strlen(add) +1];
- int i_result = 0;
- for (int i = 0;string[i] != '\0';i++,i_result++) {
- result[i_result] = string[i];
- }
- for (int i = 0;add[i] != '\0';i++, i_result++) {
- result[i_result] = add[i];
- }
- result[i_result] = '\0';
- setString(result);
- delete[]result;
- }
- void String::append(const char add) {
- char* result = new char[strlen(string) + 2];
- int i_result = 0;
- for (int i = 0;string[i] != '\0';i++, i_result++) {
- result[i_result] = string[i];
- }
- result[i_result] = add;
- result[i_result + 1] = '\0';
- setString(result);
- delete[]result;
- }
- void String::print()const {
- cout << string << endl;
- }
- int String::length()const {
- return strlen(string);
- }
- bool String::empty()const {
- if (length() == 0) {
- return true;
- }
- else {
- return false;
- }
- }
- const char* String::c_str()const {
- return string;
- }
- istream& operator>>(istream& in, String& _string) {
- char input[250];
- in >> input;
- _string = input;
- return in;
- }
- ostream& operator<<(ostream& out, const String& _string) {
- out<<_string.string;
- return out;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement