Я пытаюсь определить эту встроенную функцию. Это создало бы дерево решений (двоичное дерево частного лица, используемое при исследовании операций).fstream не записывает файл до конца
Это код:
inline void printTreeFile(int* i_node,int* j_node,int* q_infr,int* value,int nStart,int level,std::fstream& tree)
{ int spazi=0,len,stop;
for(int actual_level=0;actual_level<level;actual_level++)
{spazi+=9;
if(i_node[actual_level]==0)
len=1;
else
len=(int)log10(i_node[actual_level])+1;
spazi+=len;
if(j_node[actual_level]==0)
len=1;
else
len=(int)log10(j_node[actual_level])+1;
spazi+=len;
if(q_infr[actual_level]==0)
len=1;
else
len=(int)log10(q_infr[actual_level])+1;
spazi+=len;
}
if(value[level]==0)
{
tree<<"-->("<<i_node[level]<<","<<j_node[level]<<","<<q_infr[level]<<"=1)";
tree<<endl;
for(int i=0;i<spazi;i++)
tree<<" ";
tree<<"-->("<<i_node[level]<<","<<j_node[level]<<","<<q_infr[level]<<"=0)";
}
else
tree<<"-->("<<i_node[level]<<","<<j_node[level]<<","<<q_infr[level]<<"=1)";
//cin>>stop;
}
std::fstream& tree
определяется в основной, как:
fstream tree;
remove("tree");
tree.open("tree",ios::out|ios::app);
Я не понимаю, почему файл tree
пуст до тех пор, пока выполняется команда tree<<endl;
Мне нужно увидеть, как дерево развивается, не дожидаясь этой команды ... кто-нибудь знает решение этой проблемы? спасибо всем, что ответит!
В потоке есть буфер. Вы должны вызвать flush() для принудительной записи. std :: endl добавляет '\ n' и вызывает flush(). –