标准C ++中的字符串输入

时间:2016-01-25 12:08:46

标签: c++ string

我想在此C ++程序中输入字符串,但以下代码不起作用。它不会将员工的姓名作为输入。它只是跳过。对不起,我是C ++的新手。

#include<iostream>
#include<string>
using namespace std;
int main()
{
  int empid;
  char name[50];
  float sal;
  cout<<"Enter the employee Id\n";
  cin>>empid;
  cout<<"Enter the Employee's name\n";
  cin.getline(name,50);
  cout<<"Enter the salary\n";
  cin>>sal;
  cout<<"Employee Details:"<<endl;
  cout<<"ID : "<<empid<<endl;
  cout<<"Name : "<<name<<endl;
  cout<<"Salary : "<<sal;
  return 0;
}

2 个答案:

答案 0 :(得分:2)

您需要跳过以下行执行后留在输入缓冲区中的\n字符:cin >> empid;。要删除此字符,您需要在该行之后添加cin.ignore()

...
cout << "Enter the employee Id\n";
cin >> empid;
cin.ignore();
cout << "Enter the Employee's name\n";
...

答案 1 :(得分:1)

cin>>empid将在输入流中保留回车符,然后在调用cin.getline方法后立即将其拾取,以便立即退出。

如果您在代码生成的getline之前读取了一个字符,尽管这可能不是解决问题的最佳方法:)

cout<<"Enter the employee Id\n";
cin>>empid;
cout<<"Enter the Employee's name\n";
cin.get();
cin.getline(name,50);