本文整理汇总了C++中stream::flush方法的典型用法代码示例。如果您正苦于以下问题:C++ stream::flush方法的具体用法?C++ stream::flush怎么用?C++ stream::flush使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类stream
的用法示例。
在下文中一共展示了stream::flush方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getBookPositions
bool FuegoAssistant::getBookPositions()
{
string command;
string readLine;
//load the book back
if(!bookLoaded){
command = "book_load \"Fuego\\book.dat\"";
if(!sendCommandWithEmptyResponse(command, readLine)){
fprintf(stderr, "[FuegoAssistant]%s\n\n", readLine);
}
bookLoaded = true;
}
command = "book_position";
writeToFuego << command<<endl;
writeToFuego.flush();
//read two lines,first is best move, 2nd is all posible moves
string first_line;
string second_line;
//make sure the first line starts with =
do{
getline(readFromFuego, first_line);
}while(first_line[0]!='=');
getline(readFromFuego, second_line);
bookMoves.clear();
vector<string> l;
//parse first line
transform(first_line.begin(), first_line.end(), first_line.begin(), ::tolower);
if(helper::split(first_line, l, ' ') <4)
return false;
bookMoves.push_back(helper::convert_string_move(l[3]));
//parse second line
transform(second_line.begin(), second_line.end(), second_line.begin(), ::tolower);
if(helper::split(second_line, l, ' ') >=3){
for(size_t i=2; i<l.size(); i++){
bookMoves.push_back(helper::convert_string_move(l[i]));
}
}
return true;
}
示例2: sendCommandWithEmptyResponse
bool FuegoAssistant::sendCommandWithEmptyResponse(string command, string& readLine)
{
writeToFuego << command<<endl;
writeToFuego.flush();
do{
getline(readFromFuego, readLine);
}while(readLine[0]!='=' && readLine[0]!='?');
if(readLine[0] == '?'){
return false;
}
fprintf(stderr, "[FuegoAssistant]%s\n[FuegoAssistant]%s\n\n", command.c_str(), readLine.c_str());
return true;
}
示例3: showBoard
void FuegoAssistant::showBoard()
{
string command = "showboard";
writeToFuego << command<<endl;
writeToFuego.flush();
string response;
//make sure first line starts with =
do{
getline(readFromFuego, response);
}while(response[0]!='=');
std::cerr<<"[FuegoAssistant]Board State:\n";
for(int i=0; i<21;i++){
getline(readFromFuego, response);
fprintf(stderr, "%s\n", response);
}
}
示例4: addMove
bool FuegoAssistant::addMove(std::string move, int color){
//realStones[stone_index] = color;
string command;
if(color == COLOR_BLACK)
command = "play b "+move;
else if(color == COLOR_WHITE)
command = "play w "+move;
writeToFuego << command<<endl;
writeToFuego.flush();
string readLine;
do{
getline(readFromFuego, readLine);
}while(readLine[0]!='=' && readLine[0]!='?');
if(readLine[0] == '?'){
return false;
}
return true;
//getBookPositions();
}
示例5: estimateTerritory
bool FuegoAssistant::estimateTerritory(int color)
{
string command;
string readLine;
//uct_param_globalsearch territory_statistics 1
if(!setTerritoryParam){
sendCommandWithEmptyResponse("uct_param_globalsearch territory_statistics 1", readLine);
setTerritoryParam = true;
}
//the problem here is that i need to generate a move from fuego first before i can see the territory stats
//first, disable tree search (node threhold normally = 3)
//uct_param_search expand_threshold 10000000
sendCommandWithEmptyResponse("uct_param_search expand_threshold 100000000", readLine);
//disable forced player move
sendCommandWithEmptyResponse("uct_param_player forced_opening_moves 0", readLine);
//if there are book moves, should probably disable book first
command = "book_moves";
writeToFuego << command<<endl;
writeToFuego.flush();
do{
getline(readFromFuego, readLine);
}while(readLine[0]!='=');
vector<string> l;
if(helper::split(readLine, l, ' ') >1)
{
//needs to remove book
sendCommandWithEmptyResponse("book_clear", readLine);
bookLoaded =false;
}
addStone_mutex.lock();
//generate a fake move from fuego
sendCommandWithEmptyResponse(string("genmove ")+ helper::convert_int_color(color), readLine);
//undo the move
sendCommandWithEmptyResponse("undo", readLine);
addStone_mutex.unlock();
//get territory stats
if(!sendCommandWithEmptyResponse("uct_stat_territory", readLine)){
//this problem should be fixed
fprintf(stderr, "[FuegoAssistant]something is wrong probably cuz fuego uses forced opening moves\n");
for(int i=0; i<19*19; i++){
estimateScore[i] = 0;
}
return false;
}
//save the result
for(int i=18; i>=0; i--){
getline(readFromFuego, readLine);
//cout<<"return: "<<endl<<readLine<<endl<<"END"<<endl;
//cout <<"is this okay?"<<endl;
helper::split(readLine, l, ' ');
int j=0;
for(int z=0; z<l.size(); z++)
{
if(l[z][0] != ' '){
estimateScore[i*19+j] = ::atof(l[z].c_str());
j++;
}
}
}
return true;
}