NOTE:
These are a little sketchy...I'll fill in details 'soon'.
long String::operator^(const char find_me) const { return (string == nullptr) ? ((find_me == EOS) ? 0 : -1) : ::find(string,find_me); // call strextra // function }
long String::operator^(const char find_me[]) const { return (string == nullptr) ? ((find_me == nullptr || find_me[0] == EOS) ? 0 : -1) : ((find_me == nullptr) ? 0 : ::find(string,find_me)); }
long String::operator^(const String & find_me) const { return (string == nullptr) ? ((find_me.string == nullptr) ? 0 : -1) : ((find_me.string == nullptr) ? 0 : ::find(string,find_me.string)); }
long String::find(const String & find_me, long start_looking) const { return (string == nullptr) ? ((find_me.string == nullptr) ? 0 : -1) : ((find_me.string == nullptr) ? 0 : ::find(string, find_me.string, start_looking)); }
long String::find(const char find_me[], long start_looking) const { return (string == nullptr) ? ((find_me == nullptr || find_me[0] == EOS) ? 0 : -1) : ((find_me == nullptr) ? 0 : ::find(string, find_me, start_looking)); }
long String::find(const char find_me, long start_looking) const { return (string == nullptr) ? ((find_me == EOS) ? 0 : -1) : ::find(string, find_me, start_looking); }