2016-12-14 22 views
-5

プログラミングには新しく、structプログラムをC++で実装しようとしましたが、単純なプログラムですが、適切な結果が表示されません。どうしてか言ってくれない?関数getAndPrintでなぜプログラムが正常に動作していないのですか?

#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; 
} 

()私はcin.getを使用しています()。。コンパイラは、「番号」を印刷するまで、正しく実行それがcin.getになると(名前、9)それはゴミを印刷します関数内の残りのコードをスキップします。私がcin >> nameを使用している場合、正しく動作しています。 誰かが問題を正確に伝えることができますか?

+0

あなたは 'cin.get'について読んでみたいと思います。 C++ストリームは理解するために重要です。また、無関係のメモでは、決してあなたの関数を呼び出すことはありません。 –

+1

C++の本で、フォーマットされた操作と書式なしの操作を特に重視したC++ストリームの章を読む必要があります。 –

+1

*本当に* '* std :: string'が必要な場合以外は' char [] 'を使用しないでください! –

答えて

0

構造体の定義は、私はあなたがこの文の前にも、少なくともこの文

cin.get(name, 9); 

挿入を

room1.getAndPrint(); 

を意味だと思うsee

room1.see(); 
     ^^^^ 

のような機能が含まれていません

cin.ignore(); 

それともあなたも声明C++で、

#include <limits> 

//... 

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

はいそれはroom1.getAndPrint()です。 – berry

関連する問題