2016-04-03 10 views
0

Ich bin wirklich auf diesem einen ratlos. Ich mache ein Programm, das info aus einer Datei aufnimmt und dann in structs und dann die structs in Arrays schreibt. Mein Problem scheint zu kommen, nachdem ich kompiliert habe. Ich zeige keine Fehler im Code selbst, aber der Fehler erscheint als erste Zeile der eingelesenen Datei. mein Code wie folgt:(C++) Error unqualified-id vor numerischer Konstante erwartet-- Beim Einlesen von einer Datei

// 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; 
} 

Meine Read in Datei (inventory.txt) ist:

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 

Ich habe seit einigen Tagen an meinem Code gesucht und nicht finden können, warum ich diese Störung erhalte ! Ich entschuldige mich, wenn die Antwort mich ins Gesicht starrt, aber ich konnte nichts darüber finden, diesen Fehler aus der Datei zu bekommen, nicht aus dem Code. Jeder Rat würde sehr geschätzt werden!

+2

Bitte bereiten Sie eine [MCVE], entfernen Sie alle irrelevanten Code aus Ihrer Probe in der Frage, so dass der Fehler immer noch auftritt. –

+0

Der von Ihnen bereitgestellte Code ist in Ordnung. –

Antwort

0

Diese #include"inventory.txt" sollte wahrscheinlich so etwas wie #include "inventory.h" sein, wenn diese Header-Datei existiert.

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