Maybe it's because i'm tierd, or maybe because i'm newbie (probably the latter), but I've trouble understanding this code, specifically "char(tolower(ch))"... What's happening right there? and why do I have to type "char", why not just "(tolower(ch))" alone?
The character variable type in C++ can easily convert between integer and character representation. http://www.cplusplus.com/reference/cctype/tolower/
This links to a nice explanation of tolower. The most important thing to notice pertaining to your question is the function's prototypes: int tolower ( int c );
You will notice the function takes an integer as input and returns an integer as output.
Inside the tolower function call there is no need to cast the character variable to an integer because that code is automatically generated by the compiler. You do have to cast the returned integer to a character when the compiler can't explicitly tell what you mean. The standard out can take all kinds of different variable types including integers. Since that is what tolower returns, cout thinks you want to print the integer out to the screen. Casting it to an integer explicitly tells the compiler that you would like for it to be a character instead.