0

私は単純な銀行システムを行っています。このシステムでは、account creation新しいアカウントを作成する方法を行っています。
クライアントが新しいアカウントを作成するために入るとき、彼は自分の個人データを入力する必要があります。
私は問題がばかげていると同時に単純であることを知っています。

問題は、クライアントが自分の情報を入力するときです. 次のようにデータを表示するとします.

  • あなたの名: (そしてクライアントの入力を待ちます)

  • あなたの姓: ( andwaits for client input)

  • あなたの年齢: (そしてクライアントの入力を待ちます)

  • あなたの住所: (そしてクライアントの入力を待ちます)

    上で発生するのは当然ですが、そうではありません。

それが起こるのは次のとおりです。

Your First name: (doesn't waits client inputs then continue ) Your last name: (and waits for client input).
Your age: (waits for client input) .
Your address: (doesn't waits client inputs then continue ) press any key to continue . . .

何が起こるかは、前の図とまったく同じです。

すべてのコードは入れませんでしたが、重要なコードだけを追加しました。

// this struct  to store the client information.
struct bc_Detail{
    char cFistName[15];
    char cLastName[15];
    unsigned short usAge;
    char cAddress[64];
};


// create an  account
class Account_Create {
private:
    int nAccountNumber; // account number
    time_t nCreationDate;  // date of join
    int nBalance;        // The amount of money
    bc_Detail client; // instance of bc_Detail to store client info

public:
    void createAccount(); // to create the account

};


// contents of create account method
void Account_Create::createAccount(){   
    std::cout << "Your First name: ";
    std::cin.getline(client.cFistName, 15);
    std::cout << "Your last name: ";
    std::cin.getline(client.cLastName, 15);
    std::cout << "Your age: ";
    std::cin >> client.usAge;
    std::cout << "Your address: ";
    std::cin.getline(client.cAddress, 64);
}


int main(){
     Account_Create create;
     create.createAccount();
   return 0;
}
4

2 に答える 2

1

使ってみてください:

std::cin.get();// will eatup the newline

 std::cin >> client.usAge;

cin変数client.usAgeに入力された数値を格納し、エントリを送信するために必要な末尾の改行文字はバッファに残されます。

あなたも試すことができます:

cin.ignore();
于 2013-07-24T04:43:31.433 に答える
0

問題は、getline() の呼び出しと ">>" を混在させていることです。

c++ getline() が複数回呼び出されたときにコンソールからの入力を待機していない

提案:

  • cin.getline() を ">>" に置き換えます。

  • 同時に、「char name[15]」を「std::string」に置き換えます。

  • 「struct bc_Detail」をクラスに置き換えることも検討してください。

于 2013-07-24T04:25:26.827 に答える