関数 int Reverse(ifstream &inFile, int level) があります。特定のセパレータに到達するまで、一度に 1 文字ずつ読み取ることになっています。次に、関数はそれらの文字を逆の順序で表示します。区切り文字は呼び出し元の関数に返されます。セパレーターは反転しません。
#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);
}
セパレーターを本当に戻せないところまで来ました。すべての制御パスが値を返すわけではないようです。関数が正しい値を返すようにするにはどうすればよいですか? ありがとう。