跨平台的C ++ - 当它可用时更喜欢_ltoa的任何理由?

时间:2014-05-23 05:11:43

标签: c++ type-conversion cross-platform

我最近开始研究最初由其他人开发的C ++项目。

在不同平台上查看源代码的旧副本,似乎已在Windows版本中使用_ltoa,但每次新的Linux版本时,代码都已手动更改为使用sprintf是必需的。

我可以使用#if defined来避免每个平台的手动更改,但有没有理由这样做,而不是仅在所有平台上使用sprintf
_ltoa以任何方式"更好"什么时候构建Windows?

修改
虽然这段代码是C ++,但我更倾向于坚持使用C函数进行这种特定的类型转换,因为生成的char数组被传递给JNI函数NewStringUTF。 我可以使用std::to_string,然后使用string::c_str()来获取char数组,但这是一个额外的,不必要的函数调用。

1 个答案:

答案 0 :(得分:3)

理论上,

sprintf可能会因为格式字符串给出的额外复杂性而稍慢。在实践中,大多数现代编译器都能够解析格式字符串,并且在简单的情况下,将其自身解析为适当的函数调用(一些ltoa - 就像在这种情况下一样)。

因此,我使用sprintf并避免搞乱特定于实现的东西。

相关问题