C++は必要なことをします|シャア[] COUTと逆のchar []
#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'です。 –