【发布时间】:2011-07-29 13:04:24
【问题描述】:
问题之前一直在问,但我对最好的方法还是有点茫然。我有一个整数,想获得一个 char* 用作结构的成员。
类似的问题例如 here 或 here。 我宁愿不使用 stringstream 或 lexical_cast。据我所知,基本上只剩下 itoa、sprintf 和 snprintf。
我想我的部分问题是我不太了解 char 指针是如何工作的。
- 如果我请求
char str[12],它会保留 12 个字符吗? - 我推测内存已经被分配了?
- 那么空终止是如何工作的呢?
- 是在 12 个字符的末尾(有空格填充?),或者 如果数字仅使用 2 个字符,是否会出现在两个字符之后?
- 缓冲区大小是否重要,或者我应该只使用一些最大值吗 (我相信 32 位是 30 左右)?
- 如果我稍后在一个简单的结构中使用指针,内存 自动清除还是需要析构函数?
- 析构函数是否需要知道初始化缓冲区的大小?
- 为什么没有人费心从 实际数量?
- 是否推荐使用 snprintf 而不是 itoa?
谢谢
【问题讨论】:
-
为什么要求严格?您应该阅读本文以消除指针和数组之间的混淆。 stackoverflow.com/questions/4810664/how-do-i-use-arrays-in-c
-
char* 在第三方结构定义中。我自己不使用它们(正如您可能从问题中看出的那样)。
-
简化您的生活:使用
std::string和std::stringstream。另请参阅std::string::c_str()。