2016-12-14 4 views
-5

Я новичок в программировании и пытался реализовать программу struct в C++, это простая программа, но она не печатает правильный результат. Пожалуйста, скажи мне почему?Почему программа не работает должным образом?

#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 (имя, 9) распечатать мусор и пропускает остальную часть кода внутри функции. Если я использую имя cin >>, тогда он работает правильно. Может ли кто-нибудь сказать, в чем проблема?

+0

Возможно, вы захотите прочитать о 'cin.get', не думайте, что он делает то, что вы ожидаете. Потоки C++ важны для понимания. Кроме того, в несвязанной заметке вы никогда не называете свою функцию. –

+1

Вам нужно прочитать главу в своей книге на C++, в которой рассказывается о потоках C++, с особым акцентом на форматированные и неформатированные операции. –

+1

Не используйте 'char []', если вам действительно не нужно - 'std :: string' проще! –

ответ

0

Определение структуры не содержит такую ​​функцию, как see

room1.see(); 
     ^^^^ 

Я думаю, что вы имеете в виду

room1.getAndPrint(); 

Также перед этим утверждением

cin.get(name, 9); 

вставку по крайней мере это утверждение

cin.ignore(); 

Или вы даже можете включить заголовок <limits> и вставить заявление

#include <limits> 

//... 

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

yes it is room1.getAndPrint(); – berry

Смежные вопросы