【发布时间】:2014-02-19 08:44:21
【问题描述】:
如何从返回类型为 const char* 的函数返回本地字符数组?
注意:我想要一种不使用 std 的方法: :字符串
const char * getXXX()
{
char buf[32];
sprintf(buf,"XXX%d",i); // some manipulation
return buf; // How to return???
}
【问题讨论】:
-
@Spook ,如果我在函数内使用“new”关键字,我应该在哪里删除该指针?
-
您能否详细说明为什么您不想使用
std::string?使用standard library 将使您作为 C++ 程序员的生活变得更加轻松! -
@Nadaraj 我已经回答过 :) 如果您在函数内部分配内存,则调用者负责释放它。当然,除非您使用
std::string- 那么您可以简单地按值返回它,而不必担心释放分配的内存。 -
@Joachim Pileborg .. 因为我在函数中使用了很多 sprintf 语句,所以我需要一个 char buf。所以,我正在寻找一个解决方案,而不是再次将 char buf 分配给临时字符串以返回值。
-
你知道
std::ostringstream吗?使用它,您可以使用所有正常的 C++ 流输出格式化功能,并且仍然可以得到std::string作为输出。没有固定大小的缓冲区,没有对字符串的特殊情况处理,类型安全,自动附加到字符串。所有这些你无法通过使用旧的 C 风格sprintf和家庭获得的东西。
标签: c++