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; 处遇到错误。位于 main 方法中的那一行,我不知道为什么。错误消息是没有运算符匹配这些操作数。任何人都可以帮我解决这个问题吗?

提前致谢。

4

1 回答 1

12

您的reverse函数的返回类型为void. 这意味着它不返回任何内容,因此您cout << reverse()没有任何输出。

相反,您似乎打算这样做:

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

或者,您可以将reversereturn achar*放在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 回答