diff options
2 files changed, 53 insertions, 54 deletions
| -rw-r--r-- | Classes/String/String.cpp (renamed from Classes/String/String.hpp) | 62 | ||||
| -rw-r--r-- | Classes/String/String.h | 45 |
diff --git a/Classes/String/String.hpp b/Classes/String/String.cpp index b2c333f..f4f567b 100644 --- a/Classes/String/String.hpp +++ b/Classes/String/String.cpp @@ -1,48 +1,4 @@ -#ifndef STRING_HDR -#define STRING_HDR - -#include<iostream> -#include<fstream> - -const int MAX_SIZE = 1024; - -class String { - -private: - char* str; - int len; - - void CopyFrom(const String& other); - void Free(); - -public: - String(); - String(char ch); - String(const char* str); - String(const String& other); - String& operator=(const String& other); - ~String(); - - int getLenght() const; - String SubString(int start); - String SubString(int start, int end); - int IndexOf(const String& other, int index); //return the index of the first encounter of other in the object - int IndexOf(const char* str, int index); //reusing IndexOf(const String& other, int index) - int CountOcurences(String str); // How many times a string is found as substring - int GetOcurence(String str,int i); //Get if the i-th substring (count start from 1) - - const char& operator[](int index) const; - char& operator[](int index); - String& operator+=(const String& other); //return the concatenation of the object with other - friend bool operator==(const String& lhs, const String& rhs); //return true if two strings are equivalent - friend bool operator!=(const String& lhs, const String& rhs); //return true if two strings are not equivalent - friend std::ostream& operator<<(std::ostream& os, const String& obj); - friend std::istream& operator>>(std::istream& is, String& obj); - - String* Split(String str); -}; -const String operator+(const String& lhs, const String& rhs); - +#include "String.h" void String::CopyFrom(const String& other) { @@ -107,10 +63,10 @@ String String::SubString(int start) { char* newStr = new char[len - start + 2]; int j = 0; - for (int i = start; i < len; i++) + for (int i = start; i < len; i++) newStr[j++] = str[i]; newStr[j] = '\0'; - + String newString(newStr); delete[] newStr; @@ -136,7 +92,7 @@ String String::SubString(int start, int end) { int String::IndexOf(const String& other, int index) { - if(index < 0) + if (index < 0) throw std::logic_error("Invalid index.\n"); int iter = 0; @@ -159,10 +115,10 @@ int String::IndexOf(const char* str, int index) { } int String::CountOcurences(String str) -{ +{ int count = 0; - int i = IndexOf(str,0); - while (i!=-1) + int i = IndexOf(str, 0); + while (i != -1) { count++; i = IndexOf(str, i + 1); @@ -186,7 +142,7 @@ inline int String::GetOcurence(String str, int num) const char& String::operator[](int index) const { - if(index >= len) + if (index >= len) throw std::out_of_range("Out of range!"); return str[index]; } @@ -236,5 +192,3 @@ const String operator+(const String& lhs, const String& rhs) { return lhs; return String(lhs) += rhs; } - -#endif // !STRING_HDR diff --git a/Classes/String/String.h b/Classes/String/String.h new file mode 100644 index 0000000..37bbc6d --- /dev/null +++ b/Classes/String/String.h @@ -0,0 +1,45 @@ +#ifndef STRING_HDR +#define STRING_HDR + +#include<iostream> +#include<fstream> + +const int MAX_SIZE = 1024; + +class String { + +private: + char* str; + int len; + + void CopyFrom(const String& other); + void Free(); + +public: + String(); + String(char ch); + String(const char* str); + String(const String& other); + String& operator=(const String& other); + ~String(); + + int getLenght() const; + String SubString(int start); + String SubString(int start, int end); + int IndexOf(const String& other, int index); //return the index of the first encounter of other in the object + int IndexOf(const char* str, int index); //reusing IndexOf(const String& other, int index) + int CountOcurences(String str); // How many times a string is found as substring + int GetOcurence(String str, int i); //Get if the i-th substring (count start from 1) + + const char& operator[](int index) const; + char& operator[](int index); + String& operator+=(const String& other); //return the concatenation of the object with other + friend bool operator==(const String& lhs, const String& rhs); //return true if two strings are equivalent + friend bool operator!=(const String& lhs, const String& rhs); //return true if two strings are not equivalent + friend std::ostream& operator<<(std::ostream& os, const String& obj); + friend std::istream& operator>>(std::istream& is, String& obj); + + String* Split(String str); +}; +const String operator+(const String& lhs, const String& rhs); +#endif // !STRING_HDR
\ No newline at end of file |
