сам по себе char не предназначен для работы со "строками", сравнивать его с std::string как минимум глупо, так как char это примитивный тип, в то время как std::string - объект
1 - char = однобайтовое представление
2 - char предназначен для хранения одиночных ascii символов в одиночных ковычках
3 - нет никакого смысла сравнивать char с int`ом и так далее. разные типы данных существуют для разных нужд.
ты можешь записать сколько хочешь символов в std::string потому что он создаёт строку и выделяет ей память динамически, в хипе, в то время как создав статический массив char`ов, ты выделишь память в стеке, это не одно и то же.