Проблема Setvbuf() при превышении скорости консоли
Для того чтобы использовать консольный вывод в windows, рекомендуется использовать setvbuf().
Моя проблема заключается в том, что после создания буфера cout не работает в вызываемых функциях.
Мне пришлось вставить в следующую программу в main() строку:
cout<<"=== FIN ==="<<endl;
Так:
1. Как заставить писать at cout внутри функции?
2. Что произойдет, если размер записи больше размера буфера?
Что я уже пробовал:
<pre>#include <iostream> using namespace std; void test1(){cout<<" function ini"<<endl;} //" function ini" is not written here int main() { #ifndef __linux__ //Introduce this code at the beginning of main() to increase a lot the speed of cout in windows: char buffer_setvbuf[1024];setvbuf(stdout, buffer_setvbuf, _IOFBF, sizeof buffer_setvbuf); #endif cout<<"=== INI ==="<<endl; test1(); cout<<"=== FIN ==="<<endl; }
Примечание: Я также попытался установить buffer_setvbuf[] в качестве глобальной переменной с теми же результатами.
Richard MacCutchan
Зачем вам это нужно, какую проблему вы пытаетесь решить?
Javier Luis Lopez
Поскольку printf и cout очень медленны в windows, как можно видеть здесь: https://stackoverflow.com/questions/11558540/c-why-is-a-fprintfstdout-so-slow как сказал CPallini