为什么程序不能正常工作?

时间:2016-12-14 03:07:02

标签: c++

我刚接触编程并尝试在c ++中实现struct程序,它是简单的程序,但它不能打印出正确的结果。请告诉我为什么?

#include <iostream>
using namespace std;
struct classroom {
    int number;
    char name[9];
    int marks;
    void getAndPrint()
    {
        cout << "struct classroom ";
        cin >> number;
        cout << number << '\n';

        cin.get(name, 9);
        //cin>>name;
        cout << name;

        cin >> marks;
        cout << marks;
    }
};
int main()
{
    classroom room1;
    room1.getAndPrint();
    int i;
    cin >> i;
    return 0;
}

在函数getAndPrint()中我正在使用cin.get()..编译器执行正确直到打印“数字”但是当它出现在cin.get(name,9)时它打印垃圾并跳过其余的函数内部的代码。如果我使用cin&gt;&gt;名称,那么它正常工作。 有人能说出究竟是什么问题吗?

2 个答案:

答案 0 :(得分:2)

首先,在C ++中,struct是class,access_modifier是public。 第二,你应该试试看: Difference between cin and cin.get() for char array

答案 1 :(得分:0)

结构定义不包含像see

这样的函数
room1.see();
      ^^^^

我认为你的意思是

room1.getAndPrint();

在此声明之前

cin.get(name, 9);

至少插入此声明

cin.ignore();

或者您甚至可以包含标题<limits>和插入语句

#include <limits>

//...

cin.ignore( std::numeric_limits<streamsize>::max(), '\n' );