3
かなり興味深い問題です。endloを含める場合を除いて、C++のオーバーロードされた<<演算子は正しく出力されません
基本的には、私のクラスの文字列表現を返すために挿入演算子がオーバーロードされています。しかし、std :: endlを含めない限り、プログラムは終了します。キュー[L]:
template<class T>
std::ostream& operator << (std::ostream& outs, const LinkedQueue<T>& q) {
outs << "queue[";
if (!q.empty()) {
outs << q.front->value;
for (auto i = ++q.begin(); i != q.end(); ++i)
outs << ',' << *i;
}
outs << "]:rear";
return outs;
}
int main() {
QueueType queueType1;
queueType1.enqueue("L");
std::cout << queueType1 << std::endl;
return 0;
}
上記の主は、正しい出力生成
リアをしかし、私はメインからstd::endl
を削除した場合、プログラムブレークとは何も生成しません。
オーバーロードされたメソッドにendl
を含めることはできません。文字列に余分な文字を追加するためです。助言がありますか?
あなたは間違っています。示されたコードには何も問題はありませんが、望むなら 'outs << std :: flush;'を使ってストリームバッファを明示的にフラッシュすることができます。 –
https://stackoverflow.com/questions/22026751/c-force-stdcout-flash-print-to-screenに重複しています – Mine