0
cout
と同様に機能するオブジェクトを作成するのに、this_thread::sleep_for()
を使ってテストしていますが、文字列を印刷するときは文字間にわずかな遅延があります。しかし、各文字の間に0.1秒間待つのではなく、約1秒間待ってからすぐにすべてを印刷します。ここに私のコード:cout with this_thread :: sleep_for?
#include <iostream>
#include <chrono>
#include <thread>
class OutputObject
{
int speed;
public:
template<typename T>
void operator<<(T out)
{
std::cout << out;
}
void operator<<(const char *out)
{
int i = 0;
while(out[i])
{
std::this_thread::sleep_for(std::chrono::milliseconds(speed));
std::cout << out[i];
++i;
}
}
void operator=(int s)
{
speed = s;
}
};
int main(int argc, char **argv)
{
OutputObject out;
out = 100;
out << "Hello, World!\n";
std::cin.get();
return 0;
}
私は間違って何をやっている?
編集:CoryKramerは、それがリアルタイムで動作するためにはstd :: flushが必要であると指摘しました。 std::cout << out[i];
をstd::cout << out[i] << std::flush;
に変更することで、私は私の問題を解決しました!
「while」の中では、['std :: flush'](http://en.cppreference.com/w/cpp/io/manip/flush)すればよいでしょう。ループ – CoryKramer
'std :: cout'への出力は* buffered *であることに注意してください。 –