Я работаю над маленькой штукой здесь для школы. После нескольких часов исследований и множества ошибок и доработки логики я почти закончил свою маленькую программу здесь.
Я пытаюсь получить пользовательский ввод, сохранить его в строку, получить массив символов из строки (не спрашивайте, почему, я просто должен поместить это в массив символов), а затем получить обратный порядок фразы что пользователь вошел. Вот мой код:
#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» в программе, я получаю следующее:
Это похоже на то, как будто мой массив персонажей собирает мусор, прежде чем он сможет использовать всех персонажей. Возможно, это легко исправить, но я просто не понимаю, как мне обойти это.