使用递归反转字符串在 C 中有效,但在 C++ 中无效

Reverse a string using recursion works in C, but not in C++

这是我为使用递归反转字符串而编写的代码。

我试过两种方法:

C 版本按预期工作,但是,当我使用 C++ 版本时,它不提供任何输出并连续读取输入。

void reverse() // C++ version
{
    char ch;
    cin>>ch;
    if(ch!='\n')reverse();
    cout<<ch;
}
void reverse() // C version
{
    char ch;
    scanf("%c",&ch);
    if(ch!='\n')reverse();
    printf("%c",ch);
}
int main(void)
{
    reverse();

    return 0;
}

C++ 代码有什么问题?

问题是 cin>>ch 不会读取空白字符。相反,您可以使用 cin.get.

喜欢:

std::cin.get (ch);

正如@MohitJain 所说,您也可以使用 cin.read

在你的 C++ reverse() 中,使用 cin.get(ch); 而不是 cin>>ch; 因为后者不会读取 \n.