У меня есть задание, которое требует, чтобы я написал программу, которая предлагает пользователю ввести имя ученика и его оценку и продолжает повторяться, пока он не введет «выход».
Но я не могу понять, как получить пользовательский ввод для массива, чтобы получить всю строку (которая является именем и фамилией, поэтому я не могу просто сделать cin >> name1 [i], так как есть пробел), но когда Я использую cin.getline или просто getline и компилирую его, я получаю сообщение об ошибке, в котором говорится, что нет функции-члена, соответствующей getline.
Кроме того, когда я компилирую его без getline, это просто непрерывный цикл, который не позволяет мне вводить какую-либо информацию для имени или класса. Я новичок в массивах и cstring, поэтому, пожалуйста, попробуйте понять, где я ошибаюсь. Спасибо.
#include <iostream>
#include <string>
#include <cstring>
#include <cctype>
using namespace std;
int main() {
const int CAPACITY = 50;
string name1[CAPACITY];
string grade[CAPACITY];
char quit[]= "quit";
int i;
//for loop to get names and grades from user until quit is entered
for (i = 0; i < CAPACITY; i++) {
while (name1[i] != quit)
cout << "Please input a name (or 'quit' to quit): ";
getline(cin, name1[i]);
//break if name1[i] = quit
if (name1[i].compare(quit) == 0) {
break;
}
//continue loop if quit not entered and get the grade from that person
cout << "Please input this person's grade: ";
cin >> grade[i];
}
return 0;
}
name1
— это не массив строк, это массивchar
, который представляет собой всего одну строку. - person Barmar   schedule 11.04.2018==
для сравнения строк C, вы должны использоватьstrcmp()
. - person Barmar   schedule 11.04.2018char name1[50][MAXNAMESIZE];
- person Barmar   schedule 11.04.2018char name1
наstring name
? Разве вы не должны использовать строки C, а неstd::string
? - person Barmar   schedule 12.04.2018