数据检验器

uoj的数据检验器(val.cpp)使用testlib。

下面是A+B Problem的检验器:

#include "testlib.h"
using namespace std;

int main(void)
{
    registerValidation();

    inf.readInt(0,1000000000,"A");
    inf.readSpace();
    inf.readInt(0,1000000000,"B");
    inf.readEoln();

    inf.readEof();
    return 0;
}

上面的代码是这样工作的:

  • registerValidation():初始化。
  • inf.readInt(0,1000000000,"A"):读入叫做“A”的整形变量,范围必须在[0,1000000000]以内。如果不满足要求,则判定数据无效。
  • inf.readSpace():读取一个空格。
  • inf.readEoln():读取一个换行符。
  • inf.readEof():读取文件结束符。

上面的读取中,只要有任意一个出现了偏差,则判定数据无效。

如果数据需要保证某个要求,您可以使用ensuref()

ensuref(cmd=='Q' || cmd=='A' || cmd=='C' , "您输入的操作不合法");

在上面的代码中,如果cmd既不是'Q',也不是'A'或'C',则判定数据无效,并提示您输入的操作不合法

val.cpp中不能出现中文!


函数表

函数 功能
void registerValidation() 初始化,应该在程序开始时调用
char readChar() 读取一个字符
char readChar(char ch) 读取一个字符,必须是指定的ch
char readSpace() 读取一个空格
void unreadChar(char ch) ch添加到输入流的最后面
string readToken() 读取一个字符串,相当于scanf中的%s
string readToken(string regex) 读取一个字符串,必须满足给定的表达式regex,表达式语法类似于正则
string readWord() readToken()
string readWord(string regex) readToken(string regex)
long long readLong() 读取一个long long变量
long long readLong(long long L, long long R) 读取一个long long变量,必须在[L,R]以内
int readInt()readInteger() 读取一个int变量
int readInt(int L, int R) 读取一个int变量,必须在[L,R]以内
double readDouble()readReal() 读取一个double类型变量
double readDouble(double L, double R) 读取一个double类型变量,必须在[L,R]以内
string readLine()readString() 读取一整行,相当于gets()
string readLine(string regex) 读取一整行,必须满足给定的表达式regex
void readEoln() 读取一个换行符
void readEof() 读取文件结束符


[CC协议 BY-NC-SA] 署名 - 非商业性使用 - 相同方式共享 @ UOJ部署指北 2018
Home apps close