Multi-character constants are implementation defined in C++ though (FWIW) the documentation for Visual C++ is here:
With the first expression '\48', what seems to happen is that \4 is read as the octal literal 4 but 8 is read literally as it's not an octal digit. However, \4 is then ignored (frankly I've no idea why) and only 8 is printed.
With the second expression "\ta\018bc" we now have a string constant rather than a character constant. Ignoring the terminating \0, this expression has 6 characters namely \t, a, \01 (an octal constant), 8, b and c. Consequently, 6 asterisks get printed as you iterate through them.