【发布时间】:2018-05-29 20:29:13
【问题描述】:
void dr1() {
int num1 = 0, num2 = 0;
char str[100];
while (str[0] != '|') {
cout << "Please enter two numbers (enter \"|\" to terminate): ";
cin >> num1;
cin >> num2;
cin.getline(str, 100);
cout << num1 << num2 << endl;
}
}
如果用户输入一个字符串,变量str不应该从输入缓冲区中读取它吗?
据我所知,您不能将字符串字符输入int 类型,因此它们会留在缓冲区中。如果它们留在缓冲区中,getline() 不应该读取缓冲区中留下的任何输入吗?
【问题讨论】:
-
您是在问
num读取是否失败,线路读取不应该消耗线路并继续前进吗?如果是这样,则需要在getline之前重置流状态,并且在这样做之前需要检测失败。 -
当您需要根据用户输入的内容执行不同的操作时,最好的选择是逐行读取输入并使用
std::istringstream处理每一行。 @NathanOliver 发布的链接是一个很好的起点。