Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
mystring.h@5:e2c275b33bbf, 2016-03-25 (annotated)
- Committer:
- va009039
- Date:
- Fri Mar 25 06:08:40 2016 +0900
- Revision:
- 5:e2c275b33bbf
mystring class.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
va009039 |
5:e2c275b33bbf | 1 | // mystring.h 2016/3/24 |
va009039 |
5:e2c275b33bbf | 2 | #pragma once |
va009039 |
5:e2c275b33bbf | 3 | class mystring { |
va009039 |
5:e2c275b33bbf | 4 | public: |
va009039 |
5:e2c275b33bbf | 5 | mystring() { |
va009039 |
5:e2c275b33bbf | 6 | m_cap = 4; |
va009039 |
5:e2c275b33bbf | 7 | m_buf = new char[m_cap]; |
va009039 |
5:e2c275b33bbf | 8 | m_size = 0; |
va009039 |
5:e2c275b33bbf | 9 | m_buf[m_size] = '\0'; |
va009039 |
5:e2c275b33bbf | 10 | } |
va009039 |
5:e2c275b33bbf | 11 | ~mystring() { |
va009039 |
5:e2c275b33bbf | 12 | delete[] m_buf; |
va009039 |
5:e2c275b33bbf | 13 | } |
va009039 |
5:e2c275b33bbf | 14 | const char *c_str() const {return m_buf; } |
va009039 |
5:e2c275b33bbf | 15 | void clear() { |
va009039 |
5:e2c275b33bbf | 16 | delete[] m_buf; |
va009039 |
5:e2c275b33bbf | 17 | m_cap = 4; |
va009039 |
5:e2c275b33bbf | 18 | m_buf = new char[m_cap]; |
va009039 |
5:e2c275b33bbf | 19 | m_size = 0; |
va009039 |
5:e2c275b33bbf | 20 | m_buf[m_size] = '\0'; |
va009039 |
5:e2c275b33bbf | 21 | } |
va009039 |
5:e2c275b33bbf | 22 | void operator +=(char c) { push_back(c); } |
va009039 |
5:e2c275b33bbf | 23 | bool operator ==(const char* s) const { return strcmp(m_buf, s) == 0; } |
va009039 |
5:e2c275b33bbf | 24 | void push_back(char c) { |
va009039 |
5:e2c275b33bbf | 25 | if (m_size+1 < m_cap) { |
va009039 |
5:e2c275b33bbf | 26 | m_cap += 4; |
va009039 |
5:e2c275b33bbf | 27 | char* new_buf = new char[m_cap]; |
va009039 |
5:e2c275b33bbf | 28 | for(int i = 0; i < m_size; i++) { |
va009039 |
5:e2c275b33bbf | 29 | new_buf[i] = m_buf[i]; |
va009039 |
5:e2c275b33bbf | 30 | } |
va009039 |
5:e2c275b33bbf | 31 | delete[] m_buf; |
va009039 |
5:e2c275b33bbf | 32 | m_buf = new_buf; |
va009039 |
5:e2c275b33bbf | 33 | } |
va009039 |
5:e2c275b33bbf | 34 | m_buf[m_size++] = c; |
va009039 |
5:e2c275b33bbf | 35 | m_buf[m_size] = '\0'; |
va009039 |
5:e2c275b33bbf | 36 | } |
va009039 |
5:e2c275b33bbf | 37 | char& operator[](size_t pos) const { return at(pos); } |
va009039 |
5:e2c275b33bbf | 38 | char& at(size_t pos) const { return m_buf[pos]; } |
va009039 |
5:e2c275b33bbf | 39 | size_t size() const { return m_size; } |
va009039 |
5:e2c275b33bbf | 40 | |
va009039 |
5:e2c275b33bbf | 41 | private: |
va009039 |
5:e2c275b33bbf | 42 | size_t m_size; |
va009039 |
5:e2c275b33bbf | 43 | size_t m_cap; |
va009039 |
5:e2c275b33bbf | 44 | char *m_buf; |
va009039 |
5:e2c275b33bbf | 45 | }; |
va009039 |
5:e2c275b33bbf | 46 |