В то время как поле длины позволяет каркасу легко определять длину строки (и позволяет строке содержать символы с нулевым значением), есть очень много вещей, с которыми фреймворк (или пользовательские программы) должен иметь дело с этим ожидаем NULL завершенные строки.
Как, например, Win32 API.
Так что удобно держать терминатор NULL включенным в конце строковых данных, потому что в любом случае он, скорее всего, потребуется там довольно часто.
Обратите внимание, что класс C ++ std::string
реализован таким же образом (в любом случае в MSVC). По той же причине, я уверен (c_str()
часто используется для передачи std::string
чему-то, что хочет строку в стиле C).