C ++中“cout<<”时出错

时间:2013-05-10 13:54:32

标签: c++ pointers

我试图在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&lt;&lt;&lt;反转&lt;&lt; ENDL;位于main方法中的那行,我不知道为什么。错误消息是没有操作符匹配这些操作数。有人可以帮我解决这个问题吗?

提前致谢。

1 个答案:

答案 0 :(得分:11)

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

似乎你打算这样做:

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

或者,您可以reverse返回char*并将return s;放在其正文的末尾。但是,这有点奇怪,因为您同时使用参数和返回值作为相同的函数输出。只需按上述方式使用它。

当然,如果你使用标准库,你可以更容易地做到这一点;使用std::stringstd::reverse

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

See it in action