我正在读几个字符串,如姓名,学号和成绩,我做的前三个如下:
cout<<"Enter the student's first name: "<<endl;
string name;
cin>>name;
cout<<"Enter the student's last name: "<<endl;
string surname;
cin>>surname;
cout<<"Enter the student's unique student number: "<<endl;
string studentNo;
cin>>studentNo;
如何以下列方式输入成绩:“90 78 65 33 22”并且我希望将整个成绩线读入字符串变量。所有这些字符串都用于构造学生对象。
我如何实现这一点,我尝试使用getline(),但这不起作用。
我的尝试:
int main(){
cout<<"Enter the student's first name: "<<endl;
string name;
cin>>name;
cout<<"Enter the student's last name: "<<endl;
string surname;
cin>>surname;
cout<<"Enter the student's unique student number: "<<endl;
string studentNo;
cin>>studentNo;
string classRcd;
std::getline(cin , classRcd);
db.add_student( name , surname , studentNo , classRcd);
/*Creates a student object and add it to a list in db which is of type database*/
clear(); //clears the screen in a while loop
return 0;
}
答案 0 :(得分:4)
std::string line;
std::getline( std::cin, line );
还有另一个getline()
是流的成员函数;那通常不是你想要的。
答案 1 :(得分:2)
我建议使用getline()。它可以通过以下方式完成:
#include <iostream>
#include <string>
using namespace std;
int main()
{
cout << "Enter grades : ";
string grades;
getline(cin, grades);
cout << "Grades are : " << grades << endl;
return 0;
}
答案 2 :(得分:2)
cin>>studentNo
之后,您在流中仍然有一个新行,它会为classRcd
提供一个空字符串。
您可以在getline()
之后添加另一个cin>>studentNo
来电并单独留下结果,或者通过std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');