简体   繁体   中英

(C++) Error expected unqualified-id before numeric constant— When Reading in From a File

I am really stumped on this one. I am making a program that takes info in from a file and then puts it into structs and then the structs into arrays. My problem appears to come after I compile. I do not show any errors in the code itself, but the error comes up as the first line of the read in file. My Code is as follows:

// File: Inventory.txt
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
#include <stdlib.h> 
using namespace std;

struct book
{
   int ISBN;
   string Author;
   string Title;
   int Quantity;
   double price;
};

void choice1(book books[], int& size, int MAX_SIZE)
{
   ifstream inFile;
   inFile.open("inventory.txt");
   string str;

   while(inFile && size < MAX_SIZE)
   {
       getline(inFile, str);
       books[size].ISBN = atoi(str.c_str());

       getline(inFile, books[size].Author);

       getline(inFile, books[size].Title);

       getline(inFile, str);
       books[size].Quantity = atoi(str.c_str());

       getline(inFile, str);
       books[size].price = atoi(str.c_str());

       getline(inFile, str);
       size++;
   }

   cout << "You have successfully read the file." << endl;
   inFile.close();
}

void choice2(book books[], int size)
{
   for(int i = 0; i < size; i++)
   {
       cout << endl;
       cout << "Book Number: " << (i + 1) << endl;
       cout << "ISBN: " << books[i].ISBN << endl;
       cout << "Author: " << books[i].Author << endl;
       cout << "Title: " << books[i].Title << endl;
       cout << "Quantity: " << books[i].Quantity << endl;
       cout << "Price: $" << books[i].price << endl;
   }

   if(size != 0)
       cout << "You have successfully printed the array." << endl;
   else
       cout << "Array is empty. Read the file first." << endl;
}

void choice3(book books[], int size)
{
   if(size == 0)
       cout << "Array is empty. Read the data first." << endl;
   else
   {
       int isbn;
       int option;
       int qty;

       cout << "\nEnter the ISBN of the book: ";
       cin >> isbn;

       cout << "1. Increment" << endl;
       cout << "2. Decrement" << endl;
       cout << "3. Add New" << endl;
       cout << "Enter your option: ";
       cin >> option;

       cout << "Enter the quantity: ";
       cin >> qty;

       for(int i = 0; i < size; i++)
       {
           if(books[i].ISBN == isbn)
           {
               if(option == 1)
                   books[i].Quantity += qty;
               else if(option == 2)
               {          
                   books[i].Quantity -= qty;

                   if(books[i].Quantity)
                       books[i].Quantity = 0;
               }
               else if(option == 3)
                   books[i].Quantity = qty;

               break;
           }
       }

       cout << "You have successfully updated the array." << endl;
   }
}

void choice4(book books[], int& size, int MAX_SIZE)
{
   if(size < MAX_SIZE)
   {
       string str;

       cout << "\nEnter the book ISBN: ";
       cin >> books[size].ISBN;

       cout << "Enter the author name: ";
       cin >> books[size].Author;

       cout << "Enter the book tile: ";
       cin >> books[size].Title;
       cin.get();

       cout << "Enter the books quantity: ";
       cin >> books[size].Quantity;

       cout << "Enter the book price: $";
       cin >> books[size].price;

       size++;
       cout << "You have successfully inserted an entry." << endl;
   }
}

void choice5(book books[], int size)
{
   for(int i = 1; i < size; i++)
   {
       book current = books[i];
       int j = i;
       while(j > 0 && (books[j - 1].Title).compare(current.Title) > 0)
       {
           books[j] = books[j - 1];
           j--;
       }
       books[j] = current;
   }

   if(size != 0)
       cout << "You have successfully sorted the array." << endl;
   else
       cout << "Array is empty. Read the data first." << endl;
}

void choice6(book books[], int& size)
{
   if(size == 0)
       cout << "Array is empty. Read the data first." << endl;
   else
   {
       int isbn;

       cout << "\nEnter the ISBN of the book: ";
       cin >> isbn;

       for(int i = 0; i < size; i++)
       {
           if(books[i].ISBN == isbn)
           {
               int j = i;
               while(j < size - 1)
               {
                   books[j] = books[j + 1];
                   j++;
               }

               size--;
               break;
           }              
       }

       cout << "You have successfully deleted an entry." << endl;
   }
}

void choice7(book books[], int size)
{
   ofstream outFile;
   outFile.open("finalData.dat");

   for(int i = 0; i < size; i++)
   {      
       outFile << "Book Number: " << (i + 1) << endl;
       outFile << "ISBN: " << books[i].ISBN << endl;
       outFile << "Author: " << books[i].Author << endl;
       outFile << "Title: " << books[i].Title << endl;
       outFile << "Quantity: " << books[i].Quantity << endl;
       outFile << "Price: $" << books[i].price << endl << endl;
   }

   if(size != 0)
       cout << "You have successfully printed the array." << endl;
   else
       cout << "Array is empty. Read the file first." << endl;

   outFile.close();
}


// File: Boookstore.cpp
#include<iostream>
#include"inventory.txt"
using namespace std;

int main()
{
   const int MAX_SIZE = 100;
   int size = 0;
   int choice;
   book books[MAX_SIZE];

   do
   {
       cout << "1: Read inventory forn file" << endl;
       cout << "2: Display Inventory" << endl;
       cout << "3: Update an entry" << endl;
       cout << "4: Add an entry" << endl;
       cout << "5: Sort inventory" << endl;
       cout << "6: Delete an entry" << endl;
       cout << "7: Write inventory to file and exit" << endl;
       cout << "Enter your choice: ";
       cin >> choice;

       switch(choice)
       {
       case 1:
           choice1(books, size, MAX_SIZE);
           break;
       case 2:
           choice2(books, size);
           break;
       case 3:
           choice3(books, size);
           break;
       case 4:
           choice4(books, size, MAX_SIZE);
           break;
       case 5:
           choice5(books, size);
           break;
       case 6:
           choice6(books, size);
           break;
       case 7:
           choice7(books, size);
           cout << "Thank you." << endl;
           break;
       default:
           cout << "Invalid choice!" << endl;
       }
       cout << endl;
   }while(choice != 7);

   system("pause");
   return 0;
}

My Read in file (inventory.txt) is:

20451 <<The line that give the expected unqualified-id before numeric constant error
My First Book
Mark Lusk
Pearson Publishing
40
45.34
9780316
Brown Family
Mason Victor
Little Brown
36
105.99
1349877
Story of My Life
Norah M Jones
CreateSpace Independent Publishing Platform
20
18

I have been looking at my code for days and cannot find why I am getting this error! I do apologize if the answer is staring me in the face, but I could not find anything about getting this error from the file not the code. Any advise would be much appreciated!

This #include"inventory.txt" should probably be something like #include "inventory.h" if that header file exists.

// File: Boookstore.cpp
#include<iostream>
#include"inventory.txt"

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM