0

调试输出:

文件打开...

文件内容:

.exe 的输出(通过双击 /project/debug 运行):

文件打开...

文件内容:line1 line2 etc. . .

源代码:

#include <iostream>
#include <fstream>
#include <regex>
#include <string>
#include <list>

using namespace std;
using namespace tr1;


int main()
{
    string line;
    list<string> dataList;

    ifstream myFile("test_data.txt");
    if (! myFile)
    {
        cout << "Error opening file. \n";
        return 0;
    }
    else
    {
        cout << "File opened... \n";
        while( getline(myFile, line) ) {
            dataList.push_back(line);
        }
    }

    cout << "\n\n File contents:";

    list<string>::iterator Iterator;
    for(Iterator = dataList.begin(); 
            Iterator != dataList.end();
            Iterator++)
    {
        cout << "\t" + *Iterator + "\n";
    }




    getchar();
    return 1;
}

感谢您的帮助!

我现在明白这个问题了,谢谢。显然,这也说明这种对文件错误处理的方法是毫无价值的。我也纠正了这一点。再次感谢。

4

3 回答 3

4

您编写此行的方式:

ifstream myFile("test_data.txt");

表示代码正在当前工作目录中查找文件。

当您在调试器之外运行时/project/debug(在您的情况下),这可能是文件所在的位置。

当您在将(可能)是的调试器中运行时\project,它将不包含该文件。

您需要有两个文件副本,硬编码文件的完整路径,或者有某种方式在运行时指定文件。

于 2009-08-30T21:50:09.177 回答
2

您还可以在 VC 中的项目的调试属性页面中指定工作目录(它将在其中查找 test_data.txt)。

于 2009-08-30T21:56:37.087 回答
1

您的 .exe 通常Debug/../从 Visual Studio 启动时开始运行。当你双击它时,它会在'Debug/'中运行。

要么移动你的test_data.txt,要么像大多数开发人员一样创建一个输出目录,在运行之前导出你的二进制文件和数据。

于 2009-08-30T21:51:42.980 回答