#ifndef CONST_STRING_HPP #define CONST_STRING_HPP #include // ************************************************************************** // // ************** const_string ************** // // ************************************************************************** // class const_string { public: // Constructors const_string() : m_begin( "" ), m_end( m_begin ) {} const_string( const std::string& s ) : m_begin( s.c_str() ), m_end( m_begin + s.length() ) {} const_string( char const* s ) : m_begin(s), m_end(s + (s?strlen(s):0)) { if( is_empty()) erase(); } // avoids problems with data() if s == NULL const_string( char const* s, size_t length ) : m_begin( s ), m_end( m_begin + length ) { if( length == 0 ) erase(); } const_string( char const* first, char const* last ) : m_begin( first ), m_end( last ) {} // public members char const* data() const { return m_begin; } size_t length() const { return m_end - m_begin; } bool is_empty() const { return m_end == m_begin; } void erase() { m_begin = m_end = ""; } private: // Data members char const* m_begin; char const* m_end; }; #endif