Я прочитал несколько мест, что разница между c_str() и data() (в STL и других реализациях) заключается в том, что c_str() всегда завершается нулем, а data() - нет.
Насколько я видел в реальных реализациях, они либо выполняют одинаковые, либо data() вызовы c_str().
Что мне здесь не хватает? Какой из них правильнее использовать в каких сценариях?