在做练习题的时候,准备将两个程序写成函数,再用主程序调用。
通过选择调用函数后,由cin输入字符,完成输出后,缓冲区还存有多余字符(尤其是空字符开头)。
导致主程序调用时判断循环结束,停止程序。
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
void p5_8();
void p5_9();
int main()
{
int num;
cout << "code to use: ";
cin >> num;
while (num != 0)
{
if (num == 1)
p5_8();
else if (num == 2)
p5_9();
cout << "code to use: ";
cin >> num;
}
return 0;
}
void p5_8()
{
char word[100];
int count = 0;
cout << "Enter words (to stop, type the word done):" << endl;
cin >> word;
while (strcmp(word, "done") != 0)
{
if (bool(cin >> word) == true)
count++;
}
cout << endl << "You entered a total of " << count << " words." << endl;
//cin.sync();
}
void p5_9()
{
string word;
int count = 0;
cout << "Enter words (to stop, type the word done):" << endl;
cin >> word;
while (word != "done")
{
if (bool(cin >> word) == true)
count++;
}
cout << "You entered a total of " << count << " words." << endl;
//cin.sync();
}
尝试使用sync(),clear(),都未成功。