好的,所以我正在尝试一个简单的程序来读取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,'\0');
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,'\0');
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] << " ";
行。任何帮助将不胜感激。
答案 0 :(得分:2)
错误告诉你需要像
这样的东西std::cout << grade [i][j] << " ";
grade [i][j]
是char
," "
是const char[1]
,并且没有operator<<
在这样的RHS和LHS组合上运行。
答案 1 :(得分:1)
您正在尝试输出grade[i][j]
的值,但未使用std::cout
。试试这样:
std::cout << grade [i][j] << " ";
<<
是left shift operator。由于没有为char定义(例如grade[i][j]
),因此会出现错误。