2012-08-30 88 views
0

我正在爲一個類做一個C++的調整,並且我在十年內沒有使用C++,所以這可能是我錯過的很簡單的東西;然而,我似乎無法弄清楚。爲什麼我的函數沒有生成輸出

我有一個類,我定義了一個沒有輸出的函數;它看起來還沒有運行,我不知道爲什麼。有人能指出我的問題嗎?

問題:cout來自函數getwords的類readwords不顯示任何結果。

這裏是我的類:

class readwords { 
    private: 
      char c; 
      //string aword; 

    public: 
      void getwords(std::istream& file) { 
          cout << "I got here" << std::flush; 
        /*while(file.good()) { 
          cout << "I got here\n"; 
          c = file.get(); 
          if(isspace(c)) cout << "\n"; //continue; 
          if(isalnum(c)) { 
            cout << c; //aword.insert(aword.end(),c); 
          } 
        } 
        */ 
      } 
}; 

這是正從我的主要呼籲:

#include <fstream> 
#include <stdlib.h> 
#include "lab1.h" 

using namespace std; 
readwords wordsinfile; 
words wordslist; 

int main (int argc, char *argv[]) 
{ 
    if (argc != 2) { 
      // Looks like we have no arguments and need do something about it 
      // Lets tell the user 
      cout << "Usage: " << argv[0] <<" <filename>\n"; 
    } else { 
      // Yeah we have arguements so lets make sure the file exists and it is readable 
      ifstream ourfile(argv[1]); 
      if (!ourfile.is_open()) { 
        // Then we have a problem opening the file 
        // Lets tell the user and exit 
        cout << "Error: " << argv[0] << " could not open the file. Exiting\n"; 
        exit (1); 
      } 

      // Do we have a ASCII file? 
      if (isasciifile(ourfile)) { 
        cout << "Error: " << argv[0] << " only can handle ASCII or non empty files. Exiting\n"; 
        exit(1); 
      } 

      // Let ensure we are at the start of the file 
      ourfile.seekg (0, ios::beg); 
      // Now lets close it up 
      ourfile.close(); 
    } 

    // Ok looks like we have past our tests 
    // Time to go to work on the file 

    ifstream ourfile2(argv[1]); 
    wordsinfile.getwords(ourfile2); 

} 

感謝您的幫助,您可以提供。

+3

您在'argc!= 2'情況下的代碼既不會刷新也不會退出,只是讓代碼繼續去引用不存在的'argv [1]'。 –

+0

'argv [1]'被定義。真的,我沒有遍歷所有可能的參數,因爲我還沒有得到那麼遠,但是我已經證實'argv [1]'在用於'ifstream ourfile2(argv [1])時被設置了''' – Ryan

+1

Make 'readwords'或'words'的構造函數沒有終止。你可以發佈一個自包含的可編譯示例來演示錯誤嗎? –

回答

1

嘗試使用調試器。大多數IDE(NetBeans,Code :: Blocks等)都提供了一個與gdb交互的界面。

+0

我已經使用gdb,沒有幫助。沒有錯誤,只是沒有輸出。 – Ryan

+1

使用調試器,您可以逐步執行程序,查看變量值和當前執行位置。 –

+0

與gdb我放了一個主要的休息,然後做直到完成。我沒有看到任何變量,所以也許有另一種方式(我敢肯定有)使用GDB我似乎無法找到它。它沒有顯示我對lab1.cpp文件的任何見解。 – Ryan

0

我剛編譯並運行你的代碼,但代碼本身沒有錯, 除了我需要包括使用'cout'方法。 「我到了這裏」已成功顯示在我的Ubuntu機器上。 你的執行環境是什麼?你應該先檢查一下。

0

這個問題似乎正在重新定義我自己的課程。當實際編碼我需要使用的功能:

in readwords::countwords(std::istream& file) { 
.... 
} 

一旦做這個輸出產生罰款。

相關問題