Я ориентируюсь на Windows, но не вижу причин, по которым некоторый код API, который я пишу, не может использовать базовые типы C++. Что я хочу сделать, так это предоставить методы, которые возвращают строки и целые числа. В мире C# я бы просто использовал строку и имел строку Unicode, но в VC++ у меня есть возможность использовать std::string, std::wstring или CStrings MFC/ATL.
Должен ли я просто использовать std::wstring исключительно для поддержки юникода, или я могу использовать std::string, который будет скомпилирован в юникод на основе моих настроек сборки? Я склоняюсь к последнему. Я бы предпочел предоставить методы Get[Item]AsCString() для моих объектов для других типов строк.
Также я должен использовать size_t вместо целого числа?
API будет использоваться мной и, возможно, будущим разработчиком, работающим над графическим интерфейсом C++. Это способ разделить заботы. Мои предпочтения:
- Интуитивность для других разработчиков.
- Прямая совместимость с VС++
- Совместимость с другими компиляторами C++
- Производительность (это меня не волнует, но мне нужно время запуска для остальной части моего приложения)
Любые руководства будут оценены.
std::string
является наиболее распространенным использованием, которое я видел (хотя я виделwchar_t
и т. д. для юникода), и если вы измеряете размер чего-либо, используйтеsize_t
. - person RageD   schedule 27.02.2011