gpt4 book ai didi

c++ - 我正在尝试返回一个字符数组,但是我只返回了第一个字母

转载 作者:搜寻专家 更新时间:2023-10-31 00:06:07 24 4
gpt4 key购买 nike

我正在为学校做一件小事。经过数小时的研究,以及大量的错误和逻辑返工,我几乎完成了我的小程序。

我正在尝试获取用户输入,将其存储到字符串中,从字符串中获取字符数组(不要问为什么,我只需将其放入字符数组中即可),然后获取短语的相反顺序用户输入的。这是我的代码:

#include "stdafx.h"
#include <iostream>
#include <String>
#include <cstring>

using namespace std;
using namespace System;
#pragma hdrstop

char* getCharArray(string);

string reversePhrase( int, char* );

void main(void)
{
string sPhrase = "";
int sSize = 0;
string sReversed = "";
char* cPhrase = NULL;

cout << "Welcome to the You Type It & We'll Reverse it! [Version 1.0] " << endl;
cout << "This program will reverse your phrase, and count how many characters are in it!" << endl;
cout << "To begin just enter a phrase." << endl;
cout << "Enter a phrase: ";

getline( cin, sPhrase);

sSize = sPhrase.length();

cout << endl;

cPhrase = getCharArray(sPhrase);

sReversed = reversePhrase( sSize, cPhrase );

cout << sReversed;

system("pause");


}


string reversePhrase(int size , char* cPhrase)
{
string sReversed = "";
int place = size;

for ( int i = 0; i < size ; i ++ )
{
sReversed.append(1, cPhrase[place]);
cout << "Current string: " << sReversed << endl;
cout << "Current character: " << cPhrase[place] << endl;
place--;
}

return sReversed;
}

char* getCharArray(string sPhrase)
{
int size = 1;
size = sPhrase.length();

char* cArray = NULL;
cArray = new char[size];

for (int i = 0 ; i < size ; i++)
{
cArray[size] = sPhrase.at(i);
}

return cArray;
}

当我在程序中输入“ownage”时,这就是我返回的内容:

Error Screenshot

这几乎就像我的字符数组在它可以使用所有字符之前被垃圾收集一样。这可能是一个简单的修复方法,但我不知道如何解决这个问题。

最佳答案

尝试像这样重写 getCharArray

    char* getCharArray(string sPhrase)
{
int size = 1;
size = sPhrase.length();

char* cArray = NULL;
cArray = new char[size+1]; // NOTE

for (int i = 0 ; i < size ; i++)
{
cArray[i] = sPhrase.at(i); // NOTE
}

}

cArray[size]=0; // NOTE

return cArray;
}

请注意,循环中的赋值现在使用索引变量。此外,您需要在数组中分配一个额外的字符来设置字符串的空终止符,然后您需要将其设置在末尾。

你还需要考虑在某个时候释放数组

关于c++ - 我正在尝试返回一个字符数组,但是我只返回了第一个字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/704602/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com