【发布时间】:2010-12-29 11:03:16
【问题描述】:
我正在使用 itoa 内置函数,以便将整数转换为二进制并将其存储在 char* 中。一切正常,输出也正确(如预期的那样)。唯一出错的是 itoa 不能在 Linux、suse 等开源系统上运行。 关于在开源环境中使用 itoa 的任何建议。
【问题讨论】:
-
Emm...它究竟是如何“不起作用”的?
标签: c++
我正在使用 itoa 内置函数,以便将整数转换为二进制并将其存储在 char* 中。一切正常,输出也正确(如预期的那样)。唯一出错的是 itoa 不能在 Linux、suse 等开源系统上运行。 关于在开源环境中使用 itoa 的任何建议。
【问题讨论】:
标签: c++
引用Wikipedia:
itoa(整数到 ASCII)函数是标准 C 编程语言的广泛非标准扩展。它不能被移植使用,因为它没有在任何 C 语言标准中定义;但是,编译器通常在非一致性模式下通过标头<stdlib.h>提供它,因为它是标准库函数atoi的逻辑对应物。
换句话说:
【讨论】:
使用 sprintf
int i = 100;
char str[5];
sprintf(str, "%d", i);
【讨论】:
itoa 是非标准函数。您可以使用 stringstream 获得类似于 itoa 的行为
#include<sstream>
string a;
int i;
stringstream s;
s << i;
a = s.str();
【讨论】:
s < i?我也不相信这会转换为二进制。
s <<i 用于将 i 转换为 a 不用于转换为二进制。
itoa 不是标准 C++ 函数。使用boost::lexical_cast,或者使用stringstreams
【讨论】: