在C++ API上公开的基本类型

WTL*_*bie 7 c++ api-design visual-c++

我的目标是Windows,但我没有看到为什么我正在编写的某些API代码无法使用基本的C++类型.我想要做的是公开返回字符串和整数的方法.在C#世界中我只使用字符串,并且有一个unicode字符串,但在VC++中我可以选择使用std :: string,std :: wstring或MFC/ATL CStrings.

我应该只使用std :: wstring来支持unicode,还是可以使用std :: string根据我的构建设置将其编译为unicode?我倾向于后者.我更喜欢在我的对象上为其他字符串类型提供Get [Item] AsCString()方法.

我应该使用size_t而不是整数吗?

我将使用API​​,也许是未来的开发人员在C++ GUI上工作.这是一种分离问题的方法.我的偏好:

  • 其他开发人员的直觉性.
  • 与VC++的向前兼容性
  • 与其他C++编译器的兼容性
  • 性能(对我来说这是一个较小的问题,但我的应用程序的其余部分需要启动时间)

任何指南将不胜感激.

Rad*_*nej 1

在你的情况下,我需要几个小时/几天的时间才能形成意见并做出决定。首先,与 C++_API 相比,我更喜欢 C_API,即使对于 C++ 代码也是如此。那么答案将是 char*、wchar* 或 TCHAR*。现在,尝试猜测您是否真的期望需要 UNICODE。我的绝大多数项目(包括那些带有 GUI 的项目)都不需要 UNICODE,普通 C 数组的简单性和熟悉性往往是难以匹敌的。

简而言之,尝试预测您的需求是什么,不要试图展望太远的未来(2年是一个很好的标志),然后提出最简单的解决方案来满足需求。

最后:为了更直接地回答你的问题,我将从 std::string 作为我评估的第一选择开始。除非我能找到一些有利于其他选择的出价优势,否则我会坚持下去。