2015-11-05 50 views
0

我正在爲計算機科學課程中的項目編寫代碼,並正在測試我的算法以查看它是否有效以及它的速度。我知道該算法的工作原理,因爲當我在Visual Studio 2013中啓動程序時,我會得到正確的輸出。但是,當我從命令行的Visual Studio項目文件夾或從Windows資源管理器啓動.exe時,前兩個cout語句顯示正確,但for循環中的cout語句完全不顯示。當我在Visual Studio之外啓動.exe時,只會發生這種情況。這不是一個大問題,但我想知道這裏發生了什麼。謝謝。從命令行啓動時,在for循環中不顯示C++ cout語句

這裏爲int main()的(第2個COUTS工作和別人不一樣):

int main() { 
    // declare input stream for reading dctnryWords.txt 
    ifstream inFile; 
    // create a pointer to memory in the heap 
    // where each word in the dictionary will be stored 
    string* words = new string[DICTIONARY_SIZE]; 
    // create a vector of forward_lists to hold 
    // adjacent words for each word in the dictionary 
    vector< list<string> > adjacents(DICTIONARY_SIZE); 
    // open dctnryWords.txt 
    inFile.open("dctnryWords.txt"); 
    // load words into RAM 
    cout << "Loading words into RAM took: " 
     << time_call([&] { copyDictionary(inFile, words); }) 
     << "ms\n"; 

    cout << "Finding adjacent words took: " 
     << time_call([&] { searchAdjacents(words, adjacents); }) 
     << "ms\n"; 

    for (int i = 0; i < DICTIONARY_SIZE; i++) { 
     if (adjacents[i].size() >= 25) { 
      cout << words[i] << "(" << adjacents[i].size() 
       << "): "; 
      for (list<string>::const_iterator j = adjacents[i].cbegin(); j != adjacents[i].cend(); j++) { 
       cout << *j << " "; 
      } 
      cout << endl << endl; 
     } 
    } 

    return 0; 
} 
+0

嘗試在'if'之前打印'adjacents [i] .size()'。 – Barmar

+1

工作目錄是否有所不同?它可能沒有找到文件 – Kevin

+1

你可以嘗試用'cout.flush();'刷新cout嗎? http://www.cplusplus.com/reference/ostream/ostream/flush/查看http://stackoverflow.com/questions/22026751/c-force-stdcout-flush-print-to-screen – francis

回答

1

我敢打賭,鎳的程序沒有找到「dctnryWords.txt」當你在其他地方啓動它......因爲它會查看當前目錄,當您在VS之外運行它時可能會有所不同。

+0

哦對。我將.txt文件移動到Release文件夾中,現在它可以工作。謝謝 –