testlib read 系まとめ
はじめに
Validator などに使う数や文字を読み込むための関数群についてです.
基本的に正常に読み込めてかつ関数に与えた制約を満たす場合はそれを返します,読み込めなかった場合は死にます.
なお必要なさそうなものは書いていないのでコードを読んで下さい,InStream 構造体の定義から飛べます.
seekEof
空白や改行を飛ばして次の読み取れるもの(数や文字)へカーソルを移動します.
移動した先が EOF だった場合は true を返し,そうでない場合は false を返します.
これを Validator で使うのはやめたほうが良さそう,Judge には使えるかもしれません.
コード例
code:cpp
while(!inf.seekEof()) {
int a = inf.readInt(0, 998244353);
// hoge
}
readSpace
char readSpace()
スペースを一つ読み込んで返す.
readEoln
void readEoln()
改行を一つ読み込む.
readEof
void readEof()
EOF を一つ読み込む.
readInt
int readInt(min_val, max_val)
min_val 以上 max_val 以下の int 型整数を一つ読み込んで返す.
readInts
std::vector<int> readInts(size, min_val, max_val)
min_val 以上 max_val 以下の int 型整数を size 個読み込んで返す.
readLong
long long readLong(min_val, max_val)
min_val 以上 max_val 以下の long long 型整数を一つ読み込んで返す.
readLongs
std::vector<long long> readLong(min_val, max_val)
min_val 以上 max_val 以下の long long 型整数を size 個読み込んで返す.
readDouble
double readDouble(min_val, max_val)
min_val 以上 max_val 以下の Double 型実数を一つ読み込んで返す.
readDoubles
std::vector<double> readDouble(size, min_val, max_val)
min_val 以上 max_val 以下の Double 型実数を size 個読み込んで返す.
readToken
std::string readToken(std::string pattern)
pattern を満たす文字列を一つ読み込んで返す.
pattern の仕様よくわかってないけど以下のように書く(正規表現?).
[a-zA-Z0-9]{1, 1000}
[] の中には許す文字を起きます.例えば ox だけを許したいなら [ox].
{} の中には文字列長制約を書きます.例えば 1 文字以上 10 文字以下なら {1, 10}.
コード例
code:cpp
inf.readToken(format(".#{%d, %d}", MIN_W, MAX_W)); readTokens
std::vector<std::string> readToken(size, pattern)
pattern を満たす文字列を size 個読み込んで返す.