数组下标的类型无效

时间:2015-12-02 04:14:01

标签: c++ arrays

我为数组下标收到了几个错误,并且没有匹配函数来调用get line ...我不确定为什么。

错误:数组下标

的类型'int [int]'无效

错误:数组下标

的类型'double [int]'无效

错误:数组下标

的类型'int [int]'无效

错误:没有匹配函数来调用'getline(bool)'

到目前为止,这是我的代码:

#include <iostream>
#include <fstream>
#include <cstring>
#include <cstdlib>
#include <iomanip>
using namespace std;

struct CountiesFirst
{
   int counties;
   double poverty_rate;
   double income;
};

const int MAX_COUNTIES = 10;

bool openFile(ifstream& input)
{
  int counties;
  double poverty_rate;
  double income;
  int i=0;
  char filename[256];

  cout << "Welcome to the Appalachian Poverty/Income Report\n";
  cout << "Enter input file name: ";
  cin >> filename;

  input.open(filename);
  getline(input, counties);

  while (getline(!input.eof() && i < MAX_COUNTIES))
  {
     input>>counties[i];
     input>> poverty_rate[i] >> income[i];
     ++i;
  }
  while (input.eof())
  {
     input.putback (i) ;
     cout << "Input file is empty" << endl;
     return i;
  }

  return !input.fail();
  }

  void printTable(string counties[],
      double poverty_rate[],
      double income[],
      size_t size)
  {
  cout << "Counties     Poverty Rate        Salary\n";
  cout << "---------------------------------------\n";
  for (size_t i = 0; i < size; ++i)
  {
    cout.width(17);
    cout << left << counties[i];
    cout << poverty_rate[i] << "%";
    cout.width(13);
    cout << right << "$" << income[i] << endl;
  }
}


  int main()
  {
    CountiesFirst counties [MAX_COUNTIES];
    int filename;

    ifstream input;
    ofstream output;

    if (openFile(input))
   {
  //sort(counties,  poverty_rate, income, size);
  void printTable(string counties[], double poverty_rate[],  double income[],       int size);
  }
  else
  {
     cout << "Input file does not exist.\n";
     exit(EXIT_FAILURE);

     input.close();
     output.close();
   }
  return 0;
 }

1 个答案:

答案 0 :(得分:0)

  1. 下面:

    int counties;
    double poverty_rate;   
    
    input >> counties[i];
    input >> poverty_rate[i] >> income[i];
    

    您正在尝试使用intdouble,就像它们是数组一样。他们不是。
    它产生&#34;数组下标的无效类型&#34;错误。

  2. getlineistreamstring作为参数。

    与此同时,您在这里传递int

    int counties;
    getline(input, counties);
    

    在这里,你做了一件完全错误的事情:

    getline(!input.eof() && i < MAX_COUNTIES)
    

    它产生&#34;没有匹配功能&#34;错误。