// @topic T070m11d07x30 class DString -- copy constructor, destructor, assignment op
// @brief main driver code

#include <iostream>
#include <cstdlib>
#include <string>

#include "DString.h"


int main()
{
    DString str{ "ABC" };
    std::cout
        << "string contains ["
        << str
        << "]"
        << " length: " << str.length()
        << " capacity: " << str.capacity()
        << "\n"
        ;

    // avoid shallow copy -- copy ctr takes care of that:
    DString str_copy = str;

    // avoid shallow assignment by overloaded = op takes care of that:
    str_copy = str;

    str = str = str; // self-assignment and chained assignment...

    while ( std::cin ) {
        std::cin >> str;
        std::cout
            << "you entered ["
            << str
            << "]"
            << " length: " << str.length()
            << " capacity: " << str.capacity()
            << "\n"
            ;
    }

    system("pause");
    return 0;
}


















int std_main()
{
    std::string str;
    while( std::cin ) {
        std::cin >> str;
        std::cout << "you entered " << str << "\n";
    }
    return 0;
}