В ваш html-ввод типа «file» вы можете добавить атрибут «accept» для ограничения типа файла только изображениями: https://developer.mozilla.org/fr/docs/Web/HTML/Element/ Вход / файл
Можно записать шаблонные функции, которые будут работать или с типом строки или в этом отношении с чем-либо, что имеет правильные методы.
Если Вы сделаете определение типа, как Вы предполагаете, необходимо будет изменить весь код в будущем при изменении определения типа. Я рекомендовал бы против него.
Править: дело в том, что строка и wstring не являются взаимозаменяемыми. Несомненно, Вы сможете обновить свою библиотеку путем изменения одной строки, но это только началом - изменение средств определения типа, Вы изменяете общедоступный API своей библиотеки. Необходимо будет изменить и протестировать весь код, который взаимодействует с библиотекой, и это могло бы представить большинство включенной работы. Даже возможно, что простой поиск и замена достаточны обновить Вашу библиотеку, и затем определение типа купило Вас ничто.
Существует значение в придерживании стандартных типов, которые все знают и понимают.
Я думаю typedeffing станд.:: строка разумна. Вы все еще связываетесь с интерфейсом все же. Если Вы когда-нибудь переключаетесь на строковую реализацию с несовместимым интерфейсом, можно изменить значение определения типа к некоторому классу адаптера. В C++ можно сделать это с минимальным ни к каким издержкам. Изменение на новый строковый тип затем подразумевает изменение класса адаптера. При нахождении адаптера часто, Вы могли бы установить его как шаблон.
Вы все еще не неуязвимы однако от других (или Вы в более позднее время) упущение об определении типа и использовании станд.:: представьте в виде строки непосредственно.
Если Вы ожидаете строковые потребности измениться в будущем, Это - хорошая практика для абстракции его далеко от остальной части кода.
Определение типа или выделенный класс являются оба способами выполнить это.
Используя определение типа хорошее начало: код полагается на абстракцию. Вещь: Ваш клиентский код может использовать что-либо a std::string
предложения, поэтому если Вы хотите мигрировать позже, необходимо будет проанализировать постакт, какие аспекты необходимы (если Вы не хотите подражать целому std::string
).
Если Вы хотите удержать контроль, на каком клиентский код может использовать, Вы лучше из использования надлежащего класса с более ограниченным интерфейсом.
Так: знайте свои потребности и решите.
Я создал бы класс, который имеет станд.:: представьте в виде строки как член парламента, не занимающий официального поста. Необходимо было бы затем повторно реализовать методы, которые Вы хотите использовать, но если бы Вы переключаете строковый тип в будущее все, что необходимо было бы сделать, переписывают этот класс.
Определение типа хорошо работало бы для переключения от строки до wstring, но переключение на строковый класс с другим интерфейсом не будет очень легко (т.е. qstring).
Это будет работать пока независимо от того, что Вы заменяете станд.:: строка с в будущем имеет все те же методы, конструкторы и т.д. как станд.:: строка. Например, это не будет работать к со станд.:: wstring, потому что его методы воздействуют на широкие символы, а не символ.
Если Вы - действительно планирование выгрузки типа в будущем, это - вероятно, хорошая идея инкапсулировать Ваши данные в пользовательском классе с необходимым интерфейсом для начала и затем изменить реализацию при оставлении интерфейса тем же. станд.:: строка, вероятно, слишком "примитивна" для Вашего приложения.