2013-11-03 49 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");