我正在做一个简单的银行系统,在这个系统中我用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;
}
答案 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;。