From "code seems to encrypt all the characters" I get that you want to encrypt/change just the first character of word. If this is correct then for converting just the first character you dont need this
1 2 3 4 5
for (unsigned i = 0; i < word.size(); i++)
{
index = word.at(i)- 'a';
word.at(i) = map.at(index);
}
so after i changed the code to word.at(0) the program seems to translate the word 5 times.
$ ./a.out
What is the translation map (type 'default' to use default): default