2016-05-29 30 views
1

我正在看Bucky的C++教程。他製作了一個節目,我完成了他的工作,但我無法讓這份名單上班。我可以通過txt文件查看單獨程序中的對象,但該程序不想查看任何內容。它工作和編譯好,但一旦輸入選擇輸入屏幕上沒有。選擇4會退出程序,但1,2,3選項根本不會提取任何內容。文件訪問不起作用

這裏的視頻解釋程序:https://www.youtube.com/watch?v=86rBqzYIbjA&index=68&list=PLAE85DE8440AA6B83#t=3.934331

我的代碼:

#include <iostream> 
#include <string> 
#include <fstream> 

using namespace std; 

int getUserData(); 
void display(int x); 


int main(){ 


    int userdata; 

    userdata = getUserData(); 

    while(userdata =! 4){ 

     switch(userdata){ 
      case 1: 
       display(1); 
       break; 
      case 2: 
       display(2); 
       break; 
      case 3: 
       display(3); 
       break; 
      default: 

     } 
     userdata = getUserData(); 


    } 


} 

int getUserData(){ 

    int choice; 

    cout << "Enter 1 to view all the neutral items" << endl; 
    cout << "Enter 2 to view all the helpful items" << endl; 
    cout << "Enter 3 to view all the harmful items" << endl; 
    cout << "Enter 4 to exit" << endl; 
    cin >> choice; 

    return choice; 

} 

void display(int x){ 


    ifstream obj; 
    obj.open("prog2.txt"); 

    string chars; 
    int powers; 

      if(x==1){ 
       while(obj>>chars>>powers) 
       if(powers==0){ 
        cout << chars<<' '<<powers<< endl; 

       } 
      } 

      if(x==2){ 
       while(obj>>chars>>powers) 
       if(powers>0){ 
        cout << chars<<' '<<powers<< endl; 
       } 
      } 


      if(x==3){ 
       while(obj>>chars>>powers) 
       if(powers<0){ 
        cout << chars<<' '<<powers<< endl; 
       } 
      } 


} 

這是越來越漂亮的令人沮喪的任何幫助都將不勝感激!

+0

文件'prog2.txt'是否與您的可執行文件存儲在同一個文件夾中? – usr2564301

+2

通常,您應該在啓動I/O操作之前檢查文件是否已成功打開。 –

+0

@Thugnificient:您可能需要運行一個調試器.... – jpo38

回答

3

您的測試'while(userdata =! 4)'是無效的。 '不是'運營商是!=。什麼代碼實際上做的是while (user data = !4),這意味着你要指定表達!4(這是false,因此0)至userdata。測試條件然後評估爲false並且循環未輸入。

+0

我以爲這是一個錯字,但我認爲你是對的。 –