Cadena de retorno de C ++ sigue recibiendo basura

¿Por qué la cadena de retorno aquí tiene todo tipo de basura?

string getChunk(ifstream &in){
char buffer[5];
for(int x = 0; x < 5; x++){
    buffer[x] = in.get();
    cout << x << " " << buffer[x] << endl;
}
cout << buffer << endl;
return buffer;
}

ifstream openFile;
openFile.open ("Bacon.txt");
chunk = getChunk(openFile);
cout << chunk;

Recibo una carga de basura en la cadena donde tiene la basura al final, aunque mi depuración dice que mi búfer se está llenando con los caracteres correctos.

Gracias, c ++ es mucho más difícil que Java.

Respuestas a la pregunta(1)

Su respuesta a la pregunta