Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 正在尝试返回字符数组_C++_Arrays_Char - Fatal编程技术网

C++ 正在尝试返回字符数组

C++ 正在尝试返回字符数组,c++,arrays,char,C++,Arrays,Char,我意识到我处理这件事的方式是错误的,但我不知道为什么。 一般来说,我对C++/编程非常陌生。 我希望我的程序执行以下操作。 如果我输入“setwantjoe”,我希望它将joe存储到一个char数组中。我有它,所以我可以成功地分离和cout joe,但是我不能从函数返回char数组。 下面是我的示例代码 char * GETNAME (char *searchinput, char*searchtext) { char returnname[64]; int starter=0;

我意识到我处理这件事的方式是错误的,但我不知道为什么。 一般来说,我对C++/编程非常陌生。 我希望我的程序执行以下操作。 如果我输入“setwantjoe”,我希望它将joe存储到一个char数组中。我有它,所以我可以成功地分离和cout joe,但是我不能从函数返回char数组。 下面是我的示例代码

char * GETNAME (char *searchinput, char*searchtext)
{
    char returnname[64];
    int starter=0;
    for(;;)
    {
        if (*searchinput == *searchtext)
        {
            searchinput++;
            searchtext++;

        }
        if (*searchinput == ' ')
        {
            searchinput++;
            searchtext++;
        }
        if (*searchinput!='\0' && *searchinput!= *searchtext && *searchinput != ' ')
        {
            returnname[starter] = *searchinput;
            starter++;
            searchinput++;
            searchtext++;
        }
        if (*searchinput=='\0')
        {
            returnname[starter]='\0';
            cout << "Char Array to Return: " << returnname << endl;
            return returnname;
        }
    }
}
char*GETNAME(char*searchinput,char*searchtext)
{
char returnname[64];
int-starter=0;
对于(;;)
{
如果(*searchinput==*searchtext)
{
searchinput++;
searchtext++;
}
如果(*searchinput=='')
{
searchinput++;
searchtext++;
}
if(*searchinput!='\0'&&&&*searchinput!=*searchtext&&*searchinput!='')
{
returnname[starter]=*搜索输入;
初学者++;
searchinput++;
searchtext++;
}
如果(*searchinput=='\0')
{
returnname[starter]='\0';

不能使用
std::array
std::vector
std::string
(在字符数组的情况下)轻松返回项目数组。如果代码调用未定义的行为,是因为返回指向本地临时对象的指针。我更喜欢这样

std::string GETNAME(const std::string &searchinput,const std::string &searchtext)
{
    std::string returnname;

    ...

    return returnname;
}

您使用
字符数组
而不是
字符串
有什么特别的原因吗?这并不是天生的错误,我只是想确定您这样做的原因是好的……请不要编辑标题以包含“已解决”一词。如果问题已经回答,您可以接受下面的一个答案来标记问题如已解决,并向帮助您消除疑虑的优秀人员授予一些额外的声誉。:-)返回局部变量的引用/指针有太多未定义的行为!!现在明白了吗
std::string GETNAME(const std::string &searchinput,const std::string &searchtext)
{
    std::string returnname;

    ...

    return returnname;
}