这是以下问题:
如果我在 32 位机器上开发并希望将我的代码移植到 64 位机器上,这里是 senario。
我的函数在内部使用了很多 std
字符串。现在,如果我想提供 API,我可以要求他们发送我可以在内部使用的 char *
吗?或者让他们给我发送一个 __int64
,我可以将其转换为字符串?
在我的 API 中使用 char *
的另一个原因是至少在一种类型的 unix 实现中(该工具的不同版本)它从 stdin
中获取数据> 通过 argv
,这是一个 char *
。
在 Windows 版本中,我不确定该怎么做。我可以只要求 __int64
然后将它转换成一个字符串......并让它以这种方式工作或者只使用 char *
吗?
最佳答案
如果您提供 C++ 实现,那么您的公共(public)接口(interface)应该只使用 std::string
。
但是,如果出于兼容性原因(听起来您可能有),您需要提供 C 风格的接口(interface),那么使用 char*
正是实现这一目标的方法。在您的 32 位库中它将是一个 32 位指针,而在库的 64 位版本中它将是 64 位。这将与客户用户对 API 的期望一致。但是,您绝对应该尽早在库中转换为 std::string
。
关于c++ - 32 位与 64 位上的字符类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4100146/