我刚接触编程并尝试在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;名称,那么它正常工作。 有人能说出究竟是什么问题吗?
答案 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' );