Por que sizeof () de uma variável de string sempre retorna o mesmo número, mesmo quando o conteúdo é alterado?

Este é um problema bastante simples, mas é bastante confuso.

string R = "hhhh" ;
cout<< sizeof( R )<<endl;

RESULTADO:

4

Variação:

string R = "hhuuuuuuhh"; cout << sizeof (R) <

OUTPUT2:

4

O que está acontecendo de errado? Em vez disso, devo usar o array de caracteres?