通过 getchar 判断cin缓存中是否有换行符 和 结束符 来结束本次的输出
void clearBuff() {
char ch;
while ((ch = getchar()) != '\n' && ch != EOF);
}
#include <iostream>
#include <string>
#include <Windows.h>
using namespace std;
int main(void) {
//求3个数最大值
int x, y, z;
cout << "请输入3个数字,以空格分割:" << endl;
cin >> x >> y >> z;
if (x > y) {
if (x > z) {
cout << "x = " << x << endl;
}
else {
cout << "z = " << z << endl;
}
}
else {
if (y > z) {
cout << "y = " << y << endl;
}
else {
cout << "z = " << z << endl;
}
}
/*
习题1. 让用户输入一个字符, 然后进行转换:
如果是大写字母,就转换为小写字母
如果是小写字母,就转换为大写字母
如果是其它字符,不做任何转换。
*/
char c;
cout << "请输入一个字符[a-z][A-Z]: " << endl;
cin >> c;
if (c >= 'a' && c <= 'z') {
c = c - 'a' + 'A';
}else if (c >= 'A' && c <= 'Z') {
c = c - 'A' + 'a';
}
cout << c << endl;
system("pause");
return 0;
}
代码输出
分别有2种结果,第一种是正确是输入输出,第二种是错误的输出,输入3个数字,我有意输入 a b c,此时会出现, 语句直接执行结束,第二个练习没有做,直接跳出结束了,这是犹豫cin输出缓存造成的,网上有很多解决办法,都不太好用,而且繁琐,今天给大家推荐这样的写法.
void clearBuff() { //处理cin中缓存,是否有换行符 和 是否有回车符,来结束本次输出
char ch;
while ((ch = getchar()) != '\n' && ch != EOF);
}
cin.clear(); //清理缓存
clearBuff(); //调用自定义,遇到 '\n' 和 回车符 结束输出
将上边的语句加入我们的程序中
#include <iostream>
#include <string>
#include <Windows.h>
using namespace std;
void clearBuff() { //处理cin中缓存,是否有换行符 和 是否有回车符,来结束本次输出
char ch;
while ((ch = getchar()) != '\n' && ch != EOF);
}
int main(void) {
//求3个数最大值
int x, y, z;
cout << "请输入3个数字,以空格分割:" << endl;
cin >> x >> y >> z;
if (x > y) {
if (x > z) {
cout << "x = " << x << endl;
}
else {
cout << "z = " << z << endl;
}
}
else {
if (y > z) {
cout << "y = " << y << endl;
}
else {
cout << "z = " << z << endl;
}
}
cin.clear(); //清理缓存
clearBuff(); //调用自定义,遇到 '\n' 和 回车符 结束输出
/*
习题1. 让用户输入一个字符, 然后进行转换:
如果是大写字母,就转换为小写字母
如果是小写字母,就转换为大写字母
如果是其它字符,不做任何转换。
*/
char c;
cout << "请输入一个字符[a-z][A-Z]: " << endl;
cin >> c;
if (c >= 'a' && c <= 'z') {
c = c - 'a' + 'A';
}else if (c >= 'A' && c <= 'Z') {
c = c - 'A' + 'a';
}
cout << c << endl;
system("pause");
return 0;
}
直接按错误的输出方式检测,现在就没有问题了,即便之前有错误,也不会影响下边的输入输出.