It seems that member function clear() of string does remove its content, but the removed contents still can be accessed by operator[] . Here's the example that makes me confused.
#include <iostream>
using namespace std;
int main()
{
    string input = "Weird";
    cout << "Your Input: " << input << "\n";
    input.clear();
    cout << "Your Input: " << input << "\n";
    cout << "Your Input: " << input[0] << input[1] << input[2] << input[3] << input[4] << '\n';
    return 0;
}
The results are:
Your Input: Weird
Your Input:
Your Input: eird
Why this is happenning? If example above is normal, what should I do to completely remove its content? (accessing by input[1] should be '\000')
 
     
    