gpt4 book ai didi

c++ - For 循环中特定行的意外迭代

转载 作者:行者123 更新时间:2023-11-28 02:31:50 25 4
gpt4 key购买 nike

不要担心代码的用途。但我会在下面发布以供引用:

#include<iostream>
#include<string>

using namespace std;

int main()
{
int numberOfStudents;

cout << "Please enter the number of students in the class:\n ";
cin >> numberOfStudents;

string temporaryname,
realname;

for (int count = 0; count < numberOfStudents; count++)
{
cout << "Please enter the name of the student";
getline(cin, temporaryname);

if (temporaryname == temporaryname);

else if (temporaryname < realname)
{
realname = temporaryname;
}
}
cin.get();
cin.get();
return 0;
}

现在输出显示如下:

Please enter the number of students in the class:
5
Please enter the name of the student
Please enter the name of the student

看到重复的“请输入学生姓名”了吗?为什么要这样做?我没有丝毫线索为什么它会重复同一行。另请注意,我是初学者 C++ 程序员。请保持您的解释简单。

最佳答案

在这条语句之后

cin >> numberOfStudents;

换行符仍在输入缓冲区中。

下一个读取函数

getline(cin, temporaryname);

读取缓冲区直到遇到这个换行符。

在使用 getline 之前,您应该在循环之前使用成员函数 ignore 来忽略缓冲区中的所有字符。例如

#include <limits>

//...
std::cin.ignore( std::numeric_limits<std::streamsize>::max() );

看来你的程序包含错字,因为这条语句

    if (temporaryname == temporaryname);

没有意义。

关于c++ - For 循环中特定行的意外迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28771885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com