str + 4 - это не символ, а указатель на символ, т.е
typeof(str+4) == char*
cout воспринимает char* как строку, и выводит символы от начала строки и до '\0'. В вашем случае, выводится 'n', следующий символ 'g', потом встречается'\0', и вывод прекращается.
Если вы хотите вывести символ 'n', то вам нужно разыменовать указатель:
cout << *(str+4)
При обращении по индексу вы получаете содержимое массива по этому индексу а не указатель на элемент:
typeof(str[4])==char
str+4 === &str[4]
*(str+4) === str[4].