Código
while (CadCar[i]!='\0'){ caracter = tolower(CadCar[i]); if ( caracter >= 97 && caracter <= 122) abecedario[caracter - 97]++; }
i lo reiniciaste a 0? recuerda que while no lo hace... agradece que está por el for apuntando al \0 final, si no, el while fuera infinito, porque tampoco avanza (no tiene un i++)
Código
std::cout<<"La Letra "<< abecedario[i] <<"Aparecio"<< i+97<<"Veces\n";
daría... "La Letra 0Aparaecio97Veces, corrigiendo espacios y corrigiendo la logica de la frase
Código
std::cout<<"La Letra "<< (char)i+97 <<" Aparecio "<< abecedario[i] <<" Veces\n";
el "(char)" es un casting, que convierte el tipo, a ese, es decir "i+97" se convierte en char y se muestra como eso