cout 和 cerr 的控制台输出顺序错误
Wrong console output order of cout and cerr
当介绍中没有写入任何内容并且用户能够在错误输出后再次编写介绍时,我想输出一个错误。问题是控制台输出的顺序错误。为什么会这样,我该如何解决?
#include <iostream>
#include <string>
using namespace std;
int main() {
string introduction;
cout <<"Introduction:" << endl;
getline(cin,introduction);
if(introduction.size()==1)
{
cerr << "ERROR PLEASE WRITE AN INTRODUCTION!" << endl;
cerr.flush();
cout <<"Introduction:" << endl;
getline(cin,introduction);
}
return 0;
}
控制台输出:
Introduction:
Introduction:
ERROR PLEASE WRITE AN INTRODUCTION!
新编辑:编辑主码到源代码中
我的解决方案:
#include <iostream>
#include <string>
#include <unistd.h>
using namespace std;
unsigned int microseconds;
int main()
{
string introduction;
cout <<"Introduction:" << endl;
getline(cin,introduction);
cout << introduction.size()<< endl;
if(introduction.size()==1)
{
cerr << "ERROR PLEASE WRITE AN INTRODUCTION!" << endl;
microseconds=1000;
usleep(microseconds);
cout <<"Introduction:" << endl;
getline(cin,introduction);
}
return 0;
}
完美的解决方案:
#include <iostream>
#include <string>
#include <unistd.h>
using namespace std;
unsigned int microseconds;
int main()
{
string introduction;
cout <<"Introduction:" << endl;
getline(cin,introduction);
while (introduction.size() == 1)
{
cerr << "ERROR PLEASE WRITE AN INTRODUCTION!" << endl;
microseconds = 1000;
usleep(microseconds);
cerr.flush();
cout << "Introduction:" << endl;
getline(cin, introduction);
}
return 0;
}
相关文章:
- 如何在 C++ 中将从文本文件中读取的元素推送和弹出到数组中,并按 Revserse 顺序输出堆栈?
- 堆排序,我无法弄清楚我的代码出了什么问题,输出顺序不正确
- C++ 以相反的顺序输出文本文件
- 函数以相反的顺序输出输入问题,并改进算法以解释相等的数字
- `sTD :: sample()的输出序列是否遵循输入序列的顺序
- cout 和 cerr 的控制台输出顺序错误
- C 的输出顺序错误
- 以特定顺序输出地图
- 以正确的顺序输出队列
- 输出未按正确的顺序打印
- 更改声明顺序时输出不正确
- VC++编译器输出顺序
- 为什么 bool 显示正确的位顺序,而直接输出移位运算结果却不显示?
- C++输出顺序
- 数字的基本表示-输出顺序相反
- fprintf和WriteConsole的输出顺序相反
- o流链接,输出顺序
- 在c++中使用map时输出顺序错误
- 检查输出顺序是否正确
- 如何在C++中反转输出顺序?(有或没有递归)