Класс std::string
реализует концепцию "строки изменяемого размера во время выполнения".Это когда этот класс должен использоваться - когда вам нужна строка, размер которой известен только во время выполнения, а также изменяемого размера во время выполнения.В ситуациях, когда вам не нужны эти функции, использование std::string
является излишним.По-видимому, авторы библиотеки не думали, что им нужна строка изменяемого размера во время выполнения для представления имени файла, поэтому они выбрали минималистичное решение: они использовали C-строку, где C-строка была достаточной.На самом деле это очень хороший принцип для проектирования библиотечных интерфейсов: никогда не требуйте то, что вам действительно не нужно.
Это правда, что в наши дни мы часто видим людей, которые поощряют программистов C ++ использовать std::string
всякий раз, когда онинужна строка, любая строка.Они часто утверждают, что классические C-строки должны быть зарезервированы для C-кода.В общем случае это фиктивная философия.Бесплатное использование сравнительно тяжелых объектов, таких как std::string
, более подходит в таких языках, как Java, но обычно неприемлемо в C ++.
Да, в некоторых приложениях на C ++ можно постоянно использовать std::string
(«можно написать программу на Java на C ++»), но в такой общей низкоуровневой библиотекепоскольку стандартная библиотека C ++, вынуждающая пользователя использовать std::string
без уважительной причины (то есть навязывающая ненужные требования), выглядит не очень хорошо.