我正在尝试将数据从文本文件导入到结构中以供使用,因为我真的不想将它们导入单独的数组。 我一直得到“错误:在每个getline上'''token'之前预期的primary-expression,我在C ++上很糟糕,并且基本上使用我必须尝试的C技能来理解这一点。我做错了什么?
#include <stdio.h>
#include<fstream>
#include <cstdlib>
#include <iostream>
#include "Ladybird.h"
using namespace std;
typedef struct managerImport{
int gridSizeA;
int gridSizeB;
int aphidCount;
int aphidPos;
int ladyCount;
int ladyPos;
struct managerImport *next;
};
void importData(managerImport[]){
ifstream manager;
manager.open("Manager.txt");
if (!manager.fail()){
//loops the 2d array
for (int i = 0; i < 1; i++)
{
getline(manager, managerImport[i].gridSizeA, managerImport[i].gridSizeB);
}
//loop the lady bird count
for (int i = 1; i < 2; i++)
{
getline(manager, managerImport[i].ladyCount);
}
//loops the lady bird coordinates
for (int i = 2; i < 10; i++)
{
getline(manager, managerImport[i].ladyPos);
}
for (int i = 10; i < 11; i++)
{
getline(manager, managerImport[i].aphidCount);
}
//loops the lady bird coordinates
for (int i = 11; i < 19; i++)
{
getline(manager, managerImport[i].aphidPos);
}
}
manager.close();
}
int main() {
//importing the manager text file
importData;
}
答案 0 :(得分:1)
您是否在函数中命名参数?
void importData(managerImport [])只是说你有一个函数importData,它接受一个类型为managerImport(你的结构)的数组。
编辑澄清: 想象一下,我写这段代码: int increment(int){return int + 1; }
我所做的是为编译器提供一个带参数“int”的函数。 “int”是我的论证的类型还是名称?这显然不会编译,因为参数必须同时具有类型和名称(所以即使我想要将我的参数命名为“int”(不建议),我仍然需要提供一个说“int”的类型实际上是(类型)。它是一个long,一个字符串,一个unsigned char?假设我的意思是接受一个int,加1,并返回递增的值(一个int),这就是我应该写的: int increment(int i){return i + 1; }
所以,在你的情况下,你有: void importData(managerImport []){...}
显然,你的意思是接受一个managerImport数组,但你没有给该数组命名。试试这个: void importData(managerImport foo []){..}
另外,除非你真的需要一个c-array,否则你可以尝试使用vector或C ++数组(std :: array)。
答案 1 :(得分:0)
函数getline
不会将文本转换为整数。它只是复制文本而不进行翻译。
for (int i = 0; i < 1; i++)
{
getline(manager, managerImport[i].gridSizeA, managerImport[i].gridSizeB);
}
您的getline
函数调用转换为getline(stream, int, int);
。
您需要使用:
manager >> managerImport[i].gridSizeA >> managerImport[i].gridSizeB;
或以字符串形式读入并解析出字符串。