O que exatamente é streambuf? Como eu uso isso

Estou tentando aprender um pouco mais sobre como os fluxos de E / S funcionam em C ++, e estou realmente confuso sobre quando usar o qu

O que exatamente é umstreambuf?
Quando uso umstreambuf, em comparação com umstring, aistream ouvector? (Eu já conheço os três últimos, mas não comostreambuf se compara a eles, se for o caso.)