Выражение должно иметь интегральный или перечисляемый тип

Вопрос: ОК, поэтому я пытаюсь сделать простую программу, которая читает 2 входных файла (имена и классы), а затем отображает их и выводит их в выходной файл. Пока у меня это: #include #include #include #include #include using namespace std; void ReadNames(); void ReadGrades(); void ReadNames() { char names [15][5]; ifstream myfile("names.txt");

Вопрос:

ОК, поэтому я пытаюсь сделать простую программу, которая читает 2 входных файла (имена и классы), а затем отображает их и выводит их в выходной файл. Пока у меня это:

#include <iostream> #include <fstream> #include <string> #include <iomanip> #include <sstream> using namespace std; void ReadNames(); void ReadGrades(); void ReadNames() { char names [15][5]; ifstream myfile(«names.txt»); if(myfile.is_open()) { while(!myfile.eof()) { for (int i = 0; i < 11; i++) { myfile.get(names[i],15,’’); cout << names[i]; } } cout << endl; } else cout << «Error loadng file!» << endl; } void ReadGrades() { char grades [15][5]; ifstream myfile2(«grades.txt»); if(myfile2.is_open()) { while(!myfile2.eof()) { for (int k = 0; k < 11; k++) { myfile2.get(grades[k],15,’’); cout << grades[k]; } } cout << endl; } else cout << «Error loadng file!» << endl; } int main() { char Name [10]; int grade [10][10]; ReadNames(); ReadGrades(); for (int i = 0;i < 5; i++) { cout << Name[i]; for ( int j = 0; j < 5; j++) grade [i][j] << » «; cout << endl; } cout << endl; system(«pause»); return 0; }

Когда я пытаюсь скомпилировать Visual Studio, мне дают две ошибки:

незаконный, правый операнд имеет тип ‘const char [1]’

оператор не действует; ожидаемый оператор с побочным эффектом

Я знаю, что это просто, но я понятия не имею, в чем проблема. Похоже, что ошибка связана с grade [i][j] << » «; линия. Любая помощь будет оценена по достоинству.

Лучший ответ:

Ошибки говорят вам, что вам нужно что-то вроде

std::cout << grade [i][j] << » «;

grade [i][j] является char, » » является const char[1], и нет operator<< который работает на такой комбинации RHS и LHS.

Ответ №1

Вы пытаетесь вывести значение grade[i][j] но вы не используете std::cout. Попробуйте вот так:

std::cout << grade [i][j] << » «;

<< – оператор сдвига влево. Поскольку он не определен для char (например, grade[i][j]), вы получаете ошибку.

Оцените статью
Добавить комментарий