2013-11-03 48 views
2

目前我在Ubuntu Linux下使用基於Qt 5.1.1的QtCreator 2.8.1。我同時做了兩個,Qt開發和編碼純C++項目。因爲我不想爲後者安裝第二個重要的IDE,所以我想使用QtCreator。使用QtCreator構建純C++

到目前爲止,我通過點擊File->New->C/C++ Project (without Qt)->C++-Project創建了一個新的C++項目(沒有Qt)。所以現在編碼工作正常。但隨着我的第一個構建我發現了一個巨大的問題,我的main.cpp

#include <iostream> 
#include <fstream> 
#include <string> 
using namespace std; 

int main() { 
    ifstream infile("file1.in"); 
    string line; 

    while(infile >> line) { 
     cout << line << endl; 
    } 

    cout << "hello world" << endl; 

return 0; 
} 

當我運行這個內QtCreator我只看到「Hello World」的控制檯上,但僅此而已(file1.in包含超過20個原始文本行)。現在奇怪的事情。在編譯這個後,我看到我所有的20行文字和「hello world」。

有沒有人知道爲什麼會發生這種情況?我以爲我不得不在QtCreator中改變編譯器,但是這種嘗試沒有成功。

+11

如果您從QtCreator運行可執行文件,我猜你正在閱讀的文件不在可執行文件的工作目錄中,所以文件永遠不會被讀取。由於您沒有針對這種情況的錯誤處理,您的軟件只會打印hello world。要驗證將file1.in的完整路徑添加到ifstream的構造函數中。 –

+0

你也可以檢查你是否禁用了「陰影構建」來確保Arne是正確的。 – Kakadu

+2

...或添加錯誤處理/報告 –

回答

0

QtCreator默認使用shadow構建,這意味着你的可執行文件將被構建在獨立的文件夾中。在你的代碼使用relativ文件路徑:

ifstream infile("file1.in"); 

根本改變FULLPATH或確保在陰影生成文件夾file1.in存在爲您的項目。

ifstream infile("C:\\file1.in");