【问题标题】:invalid types for array subscripts数组下标的类型无效
【发布时间】:2015-12-02 04:14:00
【问题描述】:

我收到了几个数组下标的错误,也没有匹配的函数来调用获取行...我不知道究竟是为什么。

错误:数组下标的类型“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;
 }

【问题讨论】:

标签: c++ arrays


【解决方案1】:
  1. 这里:

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

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

  2. getlineistreamstring 作为参数。

    同时,你在这里传递int

    int counties;
    getline(input, counties);
    

    这里你做错了:

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

    它会产生“没有匹配函数”的错误。

【讨论】:

    猜你喜欢
    • 2010-09-26
    • 2012-09-07
    • 2022-12-09
    • 2011-12-13
    • 1970-01-01
    • 2015-09-26
    • 2012-11-04
    • 2013-02-12
    相关资源
    最近更新 更多