Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <algorithm>
- #include <cstddef> // size_t
- #include <cstring> // strlen, strcpy
- #include <iostream>
- struct String {
- String(const char *str = "")
- {
- _size = strlen(str);
- this->str = new char[_size + 1];
- strcpy(this->str, str);
- }
- String(size_t substr, const char *str = "") : String(str)
- {
- this->substr = substr;
- }
- size_t size() const
- {
- return _size;
- }
- String(const String &other)
- {
- str = new char[other.size() + 1];
- strcpy(str, other.str);
- _size = other.size();
- }
- ~String()
- {
- delete[] str;
- }
- void resize(size_t new_size)
- {
- str = resize_(str, new_size);
- }
- String operator[](size_t i) const
- {
- if (substr == 0)
- return String(i + 1, str + i);
- String tmp = String(0, str);
- tmp.resize(i - substr + 1);
- return tmp;
- }
- char at(size_t i) const
- {
- return str[i];
- }
- private:
- char *resize_(const char *str, size_t new_size)
- {
- char * res = new char[new_size + 1];
- char *p = res;
- const char * q = str;
- for (size_t i = 0; i < _size && i < new_size; ++i)
- {
- *p = *q;
- p++;
- q++;
- }
- res[new_size] = '\x0';
- _size = new_size;
- delete[] str;
- return res;
- }
- size_t _size;
- char *str;
- size_t substr = 0;
- };
- int main()
- {
- String s1 = String("hello");
- String s2 = s1[0][4];
- std::cout << s2.size() << std::endl;
- for (size_t i = 0; i < s2.size(); i++)
- std::cout << s2.at(i);
- std::cout << std::endl;
- system("PAUSE");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment