このクラス関数 CLASS::READWRITE は、入力値が int 型の場合にのみ、入力ファイルからデータを読み取り、出力ファイルに書き込むことになっています。x として渡される浮動小数点値を入力すると、小数点以下が切り捨てられ、警告を出力する代わりに関数が正常に実行されます。x として 'b' のような小文字が渡された場合、値は明らかに "0" として読み取られるため、関数は警告を出力する代わりに正常に実行されます。
チェック (x != int) を強制するにはどうすればよいですか? cin.fail() の使用に関する提案を見てきましたが、ここでは cin を使用していません。
#include <iostream>
#include <fstream>
using namespace std;
ifstream input_file("in_file", ios::in);
ofstream output_file("out_file", ios::out);
int main(void)
{
CLASS object(n); // n is the number of values held in in_file
object.READWRITE(x); // x is some test value
}
void CLASS::READWRITE(int x)
{
int i;
for(i = 0; i < n; i++)
{
input_file >> number[i];
}
for(i = 0; i < n; i++)
{
if((x != int) || (x < 0))
{
out_file << "Error" << endl;
break;
}
else
{
out_file << num[i] << endl;
}
}
}