2016-12-14 44 views
-5

我剛接觸編程,試圖在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(姓名,9),其打印垃圾並跳過funcion中的其餘代碼。如果我使用cin >>名稱,那麼它工作正常。 任何人都可以告訴究竟是什麼問題?

+0

你可能想閱讀'cin.get',不要以爲它會做你期望的。 C++流是重要的理解。另外,在一個不相關的說明中,你永遠不會調用你的函數。 –

+1

您需要閱讀C++書中討論C++流的章節,特別強調格式化和未格式化的操作。 –

+1

除非*真的需要''std :: string'更容易,否則不要使用'char []'! –

回答

0

結構定義不包含像see

room1.see(); 
     ^^^^ 

這樣的功能我想你的意思

room1.getAndPrint(); 

而且此語句前

cin.get(name, 9); 

插入至少這種說法

cin.ignore(); 

或者你甚至可以包括頭部<limits>和insert語句

#include <limits> 

//... 

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

是的,它是room1.getAndPrint(); – berry