C++에서 원하는대로 수행 | 숯불 [] cout을하고 반전 문자 []
#include <iostream>
using namespace std;
void inverse(string input)
{
int length = input.length();
char* output = new char[length];
for(int i = 0; i < length; i++)
{
output[length - (i + 1)] = input[i];
}
cout << output << endl;
delete output;
}
int main(int argc, char *argv[])
{
while(true)
{
string in;
cin >> in;
inverse(in);
}
return 0;
}
내가 3/5/7 등으로 문자열을 입력 할 때 문제가있다 일하고 있어요
글자에 다음 역전됩니다, 그렇다면,하지만 만약 내가 2/4/6의 문자열 길이를 입력하면 거기에 문자를 반전 문자열은 자신의 그리고 난 단지 이러한 길이의 길이를 입력 임의의 문자가 있습니다.
이 오류는 짝수에만 표시되기 때문에 혼란 스럽습니다. 여기 Here's a little example:
가 (모든 것이 여기 잘 작동), 내가 그것을 배열의 끝에서/0 함께 할 수있는 뭔가 그런데 왜에만 짝수 번호가 알고있는 새로운 코드 : 여기
조금 예제 .#include <iostream>
using namespace std;
void inverse(string input)
{
int length = input.length();
char* output = new char[length + 1];
for(int i = 0; i < length; i++)
{
output[length - (i + 1)] = input[i];
}
output[length] = '\0';
cout << output << endl;
delete output;
}
int main(int argc, char *argv[])
{
while(true)
{
string in;
cin >> in;
inverse(in);
}
return 0;
}
아무에게도 해결책을 찾을 수 있습니까?
처음에는'#include'이 누락되었습니다. 또한 조회 : ['std :: reverse'] (http://en.cppreference.com/w/cpp/algorithm/reverse). –
rubenvb
'std :: string output (length + 1, 0);'대신'char * output = new char [length + 1];'을 쓰면,'std :: string'을 인수로 사용하게됩니다. –
나는 Ralph Tandetzky Answer에 동의한다. 응용 프로그램에서 메모리 누수가 발견되어 전체 배열을 삭제해야합니다. 'delete output;은'delete [] output'이어야합니다. –