使用C中的递归工作来反转字符串,但不能在C ++中反转

时间:2016-02-26 11:04:25

标签: c++ c recursion reverse

这是我用于使用递归来反转字符串的代码。

我试过两种方式:

  • 一个用C
  • 一个使用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 ++代码有什么问题?

2 个答案:

答案 0 :(得分:3)

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

像:

std::cin.get (ch);

作为@MohitJain赛义德,您也可以使用cin.read

答案 1 :(得分:1)

在您的C ++ reverse()中,请使用cin.get(ch);代替cin>>ch;,因为后者不会阅读\n