cin>>d;stringa; getline(cin,a); 看起来应该有两次输入, 可实际只有一次输入, a 的值不知该如何获取。 实际上这是一个缓冲区的问题。 cin 获取到输入之后, 并不是直接就把值赋给了 d,而是先存入缓冲区中,当调用 getline 时, 缓冲区中的数据还没有被释放。所以 getline 会直接从缓冲区中读取数据。因此...
cin>>name;这句在输入Xiao Ming时遇空格,xiao被输入name,而Ming留在键盘缓冲区中,被cin.getline(school, 50);捕获。而如果输入 XiaoMing,中间无空格,则会出现 Name为XiaoMing, 回车被school捕获。而school为空。所以应该改为:cin.getline(name,16);// >> name; cout << "请输入您的学校:"...
getline(cin,p);cout<<"您输入的同学p的名字为"<<d<<endl;cout<<"您输入的同学P和D的名字分别为"<<p<<"和"<<d<<endl;system("pause");return 0;} 建议不要混用。最简单的改法就是直接使用cin>>d;cin>>p;上述代码使用g++编译可正确运行。使用的vc,在vc下使用getline非成员数一般会出...
代码: #include <iostream> int main() { using namespace std; char name[16], school[50]; cout << "请输入您的姓名:" << endl; cin >> name; cout << "请输入您的学校:" << endl; cin.getline(school, 50); cout << "你的名字是:" <<... " <?还有:“Xiao Ming”; " cin >iostr...
getline(cin,a); 看起来应该有两次输入, 可实际只有一次输入, a 的值不知该如何获取。 实际上这是一个缓冲区的问题。 cin 获取到输入之后, 并不是直接就把值赋给了 d,而是先存入缓冲区中,当调用 getline 时, 缓冲区中的数据还没有被释放。所以 getline 会直接从缓冲区中读取数据。因此实际上上面的代码只...