使用递归反转字符串在 C 中有效,但在 C++ 中无效
Reverse a string using recursion works in C, but not in C++
这是我为使用递归反转字符串而编写的代码。
我试过两种方法:
- 一个与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++ 代码有什么问题?
问题是 cin>>ch
不会读取空白字符。相反,您可以使用 cin.get
.
喜欢:
std::cin.get (ch);
正如@MohitJain 所说,您也可以使用 cin.read
。
在你的 C++ reverse()
中,使用 cin.get(ch);
而不是 cin>>ch;
因为后者不会读取 \n
.
这是我为使用递归反转字符串而编写的代码。
我试过两种方法:
- 一个与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++ 代码有什么问题?
问题是 cin>>ch
不会读取空白字符。相反,您可以使用 cin.get
.
喜欢:
std::cin.get (ch);
正如@MohitJain 所说,您也可以使用 cin.read
。
在你的 C++ reverse()
中,使用 cin.get(ch);
而不是 cin>>ch;
因为后者不会读取 \n
.