从文件中部分填充数组

时间:2011-12-07 20:31:29

标签: c++

我需要用文件中的数据部分填充2个数组,并使它们保持平行。但我现在的代码给了我看起来像giberish的错误。如果有人甚至可以帮我解码错误,我将非常感激。

代码:

/***************************************************/
/* Author:     Sam LaManna                         */
/* Course:     CSC 135 Lisa Frye                   */
/* Assignment: Program 6 Elves                     */
/* Due Date:   11/22/11                            */
/* Filename:   program6.cpp                        */
/* Purpose:    Write a program that will process   */
/*             the work done by santas elfs        */
/***************************************************/

#include <iostream>     //Basic input/output
#include <iomanip>      //Manipulators
#include <string>       //String stuff 
#include <fstream>      //File input/output

using namespace std;

void instruct ();     //Function Declaration for printing instructions 
void input (ifstream &infile, string names [50], int numoftoys[50]);    //Function declaration for getting data from file

int main()
{

  string names [50] = { };       //Array for storing names
  int numoftoys [50] = { };      //Array for storing the number of toys made

  ifstream infile("eleves.dat"); //Opens input file "elves.dat"

  instruct();     //Function call to print instructions

  while (!infile.eof())
    {
      input (names [50], numoftoys [50]);
    }

  cout << names << "\n" << "\n";

  cout << numoftoys << "\n" << "\n";




  return 0;
}




/***************************************************/
/* Name: instruct                                  */
/* Description: Prints instructions to user        */
/* Parameters: N/A                                 */
/* Return Value: N/A                               */
/***************************************************/

void instruct ()                                   
{
  cout << "\n" << "This program will calculate the toys made by santas elfs and assign" << "\n";
  cout << "a rating to each elf. It will also sort them and print average, min and max." << "\n";
  cout << "\n" << "Make sure you have a file named elves.dat in the same directory as";
  cout << "this porgram or you will recieve errors.";
  cout << "\n" << "\n";

  return;
}


/***************************************************/
/* Name: input                                     */
/* Description: Reads from file                    */
/* Parameters: N/A                                 */
/* Return Value: N/A                               */
/***************************************************/

void input (ifstream &infile, string names [50], int numoftoys[50])
{
  infile >> names >> numoftoy;
  infile.ignore ("\n");

  return;
}

错误:

直接链接:http://i.imgur.com/q7I4g.png

1 个答案:

答案 0 :(得分:2)

istream::operator>> has overloads for neither arrays of strings nor arrays of integers.

您必须一次读取每个字符串和每个整数。最初由@Seth Carnegie

发布
input (infile, names, numoftoys); //your call was completely wrong

infile.ignore ('\n'); //notice the char instead of string

infile >> names >> numoftoys; //this won't work like this but at least we fixed the declaration error

如果允许你使用std :: vector等,我们可以提供更多的C ++答案。另请避免使用 - using namespace std;