缓冲区的清理工作是怎么进行的
缓冲区的清理工作是如何进行的
1. #include <iostream>
2. using namespace std;
3. int main()
4. {
5. char ch1[20];
6. char ch2[20];
7. cout < < "请输入第一串字符: ";
8. cin.get(ch1,20);
9. cout < < "字符串1为: " < <ch1 < <endl;
10. cout < < "请输入第二串字符: " < <endl;
11. cin.get(ch2,20);
12. cout < < "字符串2为: " < <ch2 < <endl;
13. cout < < "程序结束\n ";
14. return 0;
15. }
输出:
请输入第一串字符:hello world
字符串1为:hello world
请输入第二串字符:
字符串2为:
程序结束
从上面的语句我们可以看出第8行在输入hello world按下回车键后,回车键\n也被存放在了缓冲区,因此第11行根本没有提示用户输入就直接回车了。这样ch2保存的是空字符。
我有个问题,第11行之前不是有输出吗,如:
10. cout < < "请输入第二串字符: " < <endl;
最后的endl不是换行并刷新缓冲区吗,为什么没有将第8行按下的回车键给刷新掉??
------解决方案--------------------
输入缓冲和输出缓冲是2码事啊。
1. #include <iostream>
2. using namespace std;
3. int main()
4. {
5. char ch1[20];
6. char ch2[20];
7. cout < < "请输入第一串字符: ";
8. cin.get(ch1,20);
9. cout < < "字符串1为: " < <ch1 < <endl;
10. cout < < "请输入第二串字符: " < <endl;
11. cin.get(ch2,20);
12. cout < < "字符串2为: " < <ch2 < <endl;
13. cout < < "程序结束\n ";
14. return 0;
15. }
输出:
请输入第一串字符:hello world
字符串1为:hello world
请输入第二串字符:
字符串2为:
程序结束
从上面的语句我们可以看出第8行在输入hello world按下回车键后,回车键\n也被存放在了缓冲区,因此第11行根本没有提示用户输入就直接回车了。这样ch2保存的是空字符。
我有个问题,第11行之前不是有输出吗,如:
10. cout < < "请输入第二串字符: " < <endl;
最后的endl不是换行并刷新缓冲区吗,为什么没有将第8行按下的回车键给刷新掉??
------解决方案--------------------
输入缓冲和输出缓冲是2码事啊。