次のコードを実行し、ゴルフ構造の入力を求められたときに新しい行を挿入すると(Enterキーを押す)、関数の2回目の呼び出しは入力を要求せず、Enterキーをもう一度押したかのように終了します。
cin.get()、cin.clear()、cin.ignore(...)を読みましたが、何も役に立たないようです。
複数の.cppファイルとヘッダーとは何の関係もないと確信していますが、コードはそのままにしています。
Visual Studio C++2010-Expressを使用しています。
よろしくお願いします!
ヘッダーファイル:golf.h
#ifndef GOLF_H
#define GOLF_H
const int Len = 40;
struct golf{
char fullname[Len];
int handicap;
};
int setgolf(golf & g );
void showgolf(const golf & g );
#endif
Golf.cpp
#include "stdafx.h"
#include "golf.h"
#include <iostream>
#include <string>
using namespace std;
int setgolf(golf & g ){
cout << "Enter a name for the golf structure:" << endl;
if (cin.get(g.fullname,Len)) {
cin.get(); // deals with the '\n' incase the user inputs a valid string
return 1;
}
else{
return 0;
}
}
void showgolf(const golf & g ){
cout << "this golf structure contains the following information:" << endl;
cout << "name: " << g.fullname << endl ;
cout << "handicap: " << g.handicap << endl ;
}
主要 ()
#include "stdafx.h"
#include "golf.h"
#include <iostream>
#include <string>
using namespace std;
int main()
{
golf myGolf;
// check of int setgolf(golf & g );
int answ = setgolf(myGolf); //try to input empty string
showgolf(myGolf);
cout << "the number returned :" << answ << endl ;
answ = setgolf(myGolf); // normal string
showgolf(myGolf);
cout << "the number returned :" << answ << endl ;
return 0;
}