这里的任何人都知道C ++或一般的编程
我需要这个程序的帮助。我制作了一个结构,以及一个结构中的数组。当我尝试输入名称作为字符串时,无限循环可确保。有什么问题?
#include <iostream>
#include <string>
const int size = 12;
struct soccer
{
std::string name;
float points, jersey;
};
void input(soccer []);
int main()
{
soccer info[size];
float total;
input(info);
}
void input(soccer info [])
{
for (int i = 0 ; i < size ; i++)
{
std::cout << "Enter the name of soccer player #" << i+1 << ": ";
std::cin >> info[i].name;
std::cout << "Enter the jersey number for this player:";
std::cin >> info[i].jersey;
while (info[i].jersey < 0)
{
std::cout << "The jersey number cannot be a negative number. Please enter a value number for jersey: ";
std::cin >> info[i].jersey;
}
std::cout << "Enter the number of points scored by this player: ";
std::cin >> info[i].points;
while (info[i].points < 0)
{
std::cout << "Points scored cannot be a negative number. Please enter a valid number for points: ";
std::cin >> info[i].points;
}
}
}
答案 0 :(得分:1)
您似乎使用operator >>
在数据成员名称中输入了多个单词。只输入一个单词或使用标准函数std::getline( std::cin, name )
代替operator >>
。在使用ignore
之前,不要忘记使用成员函数std::getline
,以便在输入点后从流缓冲区中删除新行字符。
例如
#include <limits>
//...
std::cin.ignore( std::numeric_limits<std::streamsize>::max(), '\n' );
std::getline( std::cin, info[i].name );
另一种方法是像以前一样使用operator >>
,但添加一个运算符来输入名字和姓氏。然后你可以简单地连接这两个名字。
std::string first_name;
std::string last_name;
//...
std::cout << "Enter the first name of soccer player #" << i+1 << ": ";
std::cin >> first_name;
std::cout << "Enter the last name of soccer player #" << i+1 << ": ";
std::cin >> last_name;
info[i].name = first_name + " " + last_name;