不显示我想要的数据输入表单

时间:2013-07-24 03:59:07

标签: c++

我正在做一个简单的银行系统,在这个系统中我用account creation方法来创建新账户 当客户进入时,为了创建新账户,他必须输入他的个人数据 我知道这个问题在同一时间是愚蠢而简单的。

问题是当客户输入他的信息时,假设显示数据如下。

  • 您的名字:(并等待客户输入)
  • 您的姓氏:(并等待客户输入)
  • 您的年龄:(并等待客户输入)
  • 您的地址:(并等待客户输入)

    自然发生在上面,但发生的事情并非如此。

发生以下情况。

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

2 个答案:

答案 0 :(得分:1)

尝试使用:

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

之后

 std::cin >> client.usAge;

cin存储在变量client.usAge中输入的数字,提交条目所需的尾随换行符留在缓冲区中。

您也可以尝试:

cin.ignore();

答案 1 :(得分:0)

问题在于您将调用getline()与&#34;&gt;&gt;&#34;混合:

c++ getline() isn't waiting for input from console when called multiple times

SUGGESTIONS:

  • 替代&#34;&gt;&gt;&#34; for cin.getline()

  • 同时,替换&#34; std :: string&#34; for&#34; char name [15]&#34;。

  • 还考虑用一个类代替&#34; struct bc_Detail&#34;。