В С++ 11 basic_string::c_str определяется как точно такое же, как basic_string::data, которое, в свою очередь, определяется как то же самое, что *(begin() + n) и *(&*begin() + n) (когда 0 <= n < size()).
Я не могу найти ничего, что требует, чтобы строка всегда имела нулевой символ в конце.
Означает ли это, что c_str() больше не гарантирует получение строки с нулевым завершением?