2016-04-03 208 views
0

我真的很難過這個。我正在製作一個程序,它從文件中獲取信息,然後將其放入結構中,然後將結構放入數組中。我編譯後出現問題。我沒有在代碼本身中顯示任何錯誤,但錯誤出現在讀取文件的第一行。 我的代碼如下:(C++)在數字常量之前出現預期的非限定id錯誤 - 從文件中讀入

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

我讀文件(inventory.txt)是:

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 

我一直在尋找我的天代碼,並不能找到爲什麼我收到此錯誤!如果答案是盯着我的臉,我會道歉,但我找不到任何有關從文件中獲取此錯誤的信息,而不是代碼。任何意見將不勝感激!

+2

請準備一個[MCVE],從問題的示例中刪除所有不相關的代碼,以便錯誤仍然存​​在。 –

+0

你提供的代碼沒有問題。 –

回答

0

這個#include"inventory.txt"應該可能是#include "inventory.h",如果該頭文件存在。

// File: Boookstore.cpp 
#include<iostream> 
#include"inventory.txt" 
相關問題