C++;如何在getter函数中返回*char/char[]? 我试图用一个GETter函数在C++中返回一个字符数组。这是学术性的,我们需要使用char[]/char*,然后返回它,这样我们就可以cout将数组发送到控制台 char* Groceries:: getList() const // Returns the list member. { return list; }
我还尝试在该函数中使用strcpy。当我使用类似于:“C++;如何在getter函数中返回*char/char[]? 我试图用一个GETter函数在C++中返回一个字符数组。这是学术性的,我们需要使用char[]/char*,然后返回它,这样我们就可以cout将数组发送到控制台 char* Groceries:: getList() const // Returns the list member. { return list; },c++,arrays,char,C++,Arrays,Char,我还尝试在该函数中使用strcpy。当我使用类似于:“am”的cout时,这两种方法都返回似乎是内存位置的内容♥”。如果我尝试执行:cout如果绝对需要使用C样式的数组和指针,则需要使用new,最好是智能指针: std::unique_ptr<char[]> getList() const { const char *someCString = // whatever char *p = new char[strlen(someCString) + 1]; s
am”的cout
时,这两种方法都返回似乎是内存位置的内容♥代码>”。如果我尝试执行:cout如果绝对需要使用C样式的数组和指针,则需要使用new
,最好是智能指针:
std::unique_ptr<char[]> getList() const {
const char *someCString = // whatever
char *p = new char[strlen(someCString) + 1];
strcpy(p, someCString);
return std::unique_ptr<char[]>(p);
}
std::unique\ptr getList()常量{
const char*someCString=//随便什么
char*p=新字符[strlen(someCString)+1];
strcpy(p,someCString);
返回std::unique_ptr(p);
}
在呼叫者中:
auto p = object.getList();
std::cout << p.get() << "\n";
auto p=object.getList();
std::cout这里是一个返回C样式字符串的函数和打印它的主函数的示例
#include <stdio>
char * a_function(void)
{
static const char my_test[] = "Propane explodes.\n";
return &my_test[0]; // It's a MISRA thing.
}
int main(void)
{
char * p_text = 0;
p_text = a_function();
std::cout << Here's the text: "
<< p_text;
std::cout.flush(); // Just to be sure.
return 0;
}
虽然函数定义的返回类型可以定义为const char*
问题是存储在列表中或由列表指向的字符串不是以零结尾的,它似乎包含一些垃圾
因此,在修改列表的位置搜索错误
还有你的问题
如何返回C++中的字符,打印出来,不返回
内存地址
这是矛盾的。如果列表定义为数组,如果不想返回指针,则可以返回对此数组的引用,而不是指针。:)不想返回。而是返回一个std::string
。如果必须,则使用new
分配数组,并向调用者返回unique\u ptr
。列表的类型是什么?您真的应该显示杂货的定义。只是一个猜测,但您可能应该返回一个const char*
-const char*Groceries::getList()const
。我建议您使用调试器,在return语句处放置一个断点,并验证list
@boom\u box的值是,但是,通过阅读std::string
的文档可以很容易地回答这个问题。你为什么不那样做呢?谢谢,这实际上起了很大的作用。
char * another_function(void)
{
static char text_buffer[64];
strcpy(text_buffer, "Use a debugger!\n");
return text_buffer;
}