我的代码存在问题。在这里,我想编写一个程序,它将从文件中获取输入并将其存储在结构向量中,但是当我声明结构类型向量时,它显示错误。
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
struct input
{
char process[10];
int burst_time;
int arrival_time;
}input;
int main()
{
ifstream myfile;
vector<input> store;// problem with initializing vector
myfile.open("input.txt",ios::in);
if(myfile.is_open())
{
while(!myfile.eof())
{
myfile>>input.process;
myfile>>input.burst_time;
myfile>>input.arrival_time;
store.push_back(input);//showing problem in this line also
}
}
myfile.close();
return 0;
}
答案 0 :(得分:7)
您已将名称input
隐藏为struct input
的实例。取消隐藏它:
struct intput
{
// as before
};
答案 1 :(得分:0)
这是非常简单的事情:
宣布
时struct input
{
char process[10];
int burst_time;
int arrival_time;
} input;
你正在定义一个名为input
的结构类型,但也是一个名为input
的变量,所以在主要的编译器混淆,它不知道你是否引用变量或类型,所以只需重命名struct变量声明并将其称为自己的名称,如下所示:
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
struct input // Type defined as "input"
{
char process[10];
int burst_time;
int arrival_time;
} input1; // And variable defined as "input1" consider this to be declared in main, to be a local variable.
int main()
{
ifstream myfile;
vector<input> store{};// problem solved referring to type and not variable
myfile.open("input.txt",ios::in);
if(myfile.is_open())
{
while(!myfile.eof())
{
myfile>>input1.process; // Here now the compiler understands that you are referring to the variable and not the type
myfile>>input1.burst_time;
myfile>>input1.arrival_time;
store.push_back(input1);
}
}
myfile.close();
return 0;
}
这样编译器就不会抱怨。
还要考虑始终使用第一个字符作为大写来声明一个新类型(如您的结构)。相反,Input
和第一个字符小写input
的变量不会混淆并避免这种错误。