The sizeof() on line 7 tells you that the complex string structure requires 32 bytes. It has nothing to do with the data (the c string) of that string.
It depends on how the string class is implemented. When I compile your code with GCC it says sizeof(st) is 8. If you really want to know you'll have to look inside the code for std::string that your compiler is using.
It depends on the implementation of string. If you want to find out why exactly 32 bytes you need to find out what member variables that class harbors.