哪个有效,itoa还是sprintf?

Bit*_*map 5 c++

我正在构建我的第一个C++应用程序并选择在此阶段依赖的高效C++库,这是我正在考虑的设计考虑因素之一.

因此,我想将整数类型转换为字符串并决定是否使用;

sprintf(string, "%d", x);
Run Code Online (Sandbox Code Playgroud)

要么

整数到ASCI

itoa(x, string);
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议这些路线中哪一条有效,可能为什么?

谢谢.

dus*_*uff 14

他们都很有效率.注意它itoa()不是C++标准的一部分可能更为相关,因此在许多常见的运行时中都不可用.(特别是它不属于libstdc++它,因此在Mac OS X或Linux上不可用.)


Oli*_*rth 10

不要使用其中任何一种.使用std::stringstream等等.

std::stringstream ss;
ss << x;
ss.str();  // Access the std::string
Run Code Online (Sandbox Code Playgroud)

无论哪种方式,转换为字符串都不太可能成为应用程序执行时间的重要部分.

  • `stringstream`非常慢,这可能是某些应用程序中的重要部分(例如在HFT交易中),也不允许转换为现有的`char*`缓冲区. (2认同)