0

C++ で char 配列を逆にしようとしています。これが私のコードです:

void reverse(char s[]);
int main()
{
    char s [] = "Harry";
    cout << reverse(s) << endl;

    system("PAUSE");
    return 0;
}

void reverse(char s[])
{
    if( strlen( s ) > 0 ) {
        char* first = &s[ 0 ];
        char* last = &s[ strlen( s ) - 1 ];
        while( first < last ) {
            char tmp = *first;
            *first = *last;
            *last = tmp;
            ++first;
            --last;
        }
        return;
    }

しかし、 cout << reverse(s) << endl; でエラーになりました。その行はメイン メソッドにあり、その理由はわかりません。エラー メッセージは、これらのオペランドに一致する演算子がありません。誰でもこれを修正するのを手伝ってくれますか?

前もって感謝します。

4

1 に答える 1

12

関数reverseの戻り値の型はvoidです。これは、何も返さないため、cout << reverse()何も出力しないことを意味します。

代わりにあなたがするつもりだったようです:

char s [] = "Harry";
reverse(s);
cout << s << endl;

reverseまたは、 return aを作成して本体の最後にchar*配置することもできます。return s;ただし、同じ関数出力に対して引数と戻り値の両方を使用しているため、これは少し奇妙です。上記のように使用するだけです。

もちろん、標準ライブラリを利用すれば、これをはるかに簡単に行うことができます。とを使用std::stringstd::reverseます。

std::string s = "Test";
std::reverse(s.begin(), s.end());
std::cout << s << std::endl;

実際に見てください

于 2013-05-10T13:55:42.503 に答える