C++ 用递归方法实现逆流输入

C++ 用递归方法实现逆流输入,c++,recursion,C++,Recursion,我有一个函数int Reverse(ifstream&infle,int level)。它应该一次读取一个字符,直到达到某个分隔符。然后,该函数按相反顺序显示这些字符。分隔符返回给调用函数。分离器不能反转 #include <fstream> #include <cctype> #include <iostream> using namespace std; inline bool checkSeparator(int someValue) { re

我有一个函数int Reverse(ifstream&infle,int level)。它应该一次读取一个字符,直到达到某个分隔符。然后,该函数按相反顺序显示这些字符。分隔符返回给调用函数。分离器不能反转

#include <fstream>
#include <cctype>
#include <iostream>

using namespace std;

inline bool checkSeparator(int someValue)
{
   return(isspace(someValue) || someValue == (int)',' || someValue == (int)':' ||     someValue == (int)';' ||
  someValue == (int)'.' || someValue == (int)'?' || someValue == (int)'!' || someValue == EOF);
}

int Reverse(ifstream &inFile, int level)
{
   int input = inFile.get();

   if (!checkSeparator(input))
      Reverse(inFile, ++level);

   --level;

   if (level == 1)
      input = toupper(input);

   if (!checkSeparator(input))
      cout.put(input);

   if (checkSeparator(input))
      return(input);
}
#包括
#包括
#包括
使用名称空间std;
内联布尔校验分隔符(int-someValue)
{
返回(isspace(someValue)| someValue==(int)',| someValue==(int)':'| someValue==(int)'||
someValue==(int)'.| | someValue==(int)'.| | someValue==(int)'.| | someValue==EOF);
}
整数反转(ifstream&infle,整数级)
{
int input=infle.get();
如果(!检查分隔符(输入))
反向(填充,++电平);
--水平;
如果(级别==1)
输入=toupper(输入);
如果(!检查分隔符(输入))
输出(输入);
if(检查分隔符(输入))
返回(输入);
}

我已经到了无法真正退回分离器的地步。似乎并非所有控制路径都返回值。如何使函数返回正确的值?谢谢。

如果我没有弄错,您希望反转函数在末尾返回分隔符。 问题是Reverse函数不一定返回任何内容,因为如果在此递归级别读取的字符不是分隔符,则最后一条if语句的计算结果不为true。 分隔符不会传回

您可以通过引入另一个变量来解决此问题

int Reverse(ifstream &inFile, int level)
{
   int input = inFile.get();
   int separator = 0;
   if (checkSeparator(input))
       return input;
   else
       separator = Reverse(inFile, ++level);
   ...
   // remove the last if
   return separator;
}

您没有在代码中使用返回值-它是否可以改为void?谢谢。死在这个问题上!