It's an array. A string is a list of characters that, together, form some group of characters, hence a string. Subscripting the string cycles through the characters that form it.
I don't know why anybody uses the C IO anymore. Tutorial for iostream:
http://www.cplusplus.com/doc/tutorial/basic_io/
The std:: is the namespace. You are using antiquated <.h> files which is why you don't recognize it. Some time back, all the standard headers were moved to the format <something> rather than <something.h> or "something.h". To differentiate these, all the stuff was moved into the std namespace. To qualify and access the name, you either type std:: before every use of it, going into namespace scope, or you can perform a using declaration,
using namespace std;
which brings all the names and identifiers of a namespace into global scope.
Since the previous poster got here just before me, be aware of the cause for the using directive rather than just blindly "using" it (NOT INTENTIONAL PUN, I am truly contrite). Such activity is what causes you to miss this stuff.
And you do not use <iostream.h> unless you're using some compiler from the 1600s. You use <iostream>. That's why you need std::.