C ++无法读取文本文件

时间:2012-10-22 18:53:38

标签: c++ visual-studio-2010 text-files fstream

我正在尝试阅读一个文本文件,但什么都没有出来。我觉得可能它在我的Visual Studio资源文件夹中没有正确链接,但如果我双击它 - 它在visual studio中打开很好,如果我测试它是否打开或是否好,它不会遇到任何问题。该程序现在编译好,但没有输出。没有打印到我的命令提示符。有什么建议吗?

代码

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

int main()
{
    char str[100];
    ifstream test;
    test.open("test.txt");

    while(test.getline(str, 100, '#'))
    {
        cout << str << endl;
    }

    test.close();
    return 0;
}

文字档案

This is a test Textfile#Read more lines here#and here

2 个答案:

答案 0 :(得分:6)

您尝试按名称打开文件而不使用路径,这意味着该文件应位于程序的当前工作目录中。

从VS IDE运行程序时,问题出在当前目录中。 VS默认情况下将runnning程序的当前工作目录设置为项目目录$(ProjectDir)。但是您的测试文件位于资源目​​录中。因此open()函数找不到它,getline()立即失败。

解决方案很简单 - 将测试文件复制到项目目录。或者将其复制到目标目录(创建程序.exe文件的位置,通常是$(ProjectDir)\Debug$(ProjectDir)\Release)并更改VS IDE中的工作目录设置:Project->Properties->Debugging->Working Directory,设置为$ (TARGETDIR)。在这种情况下,它将同时适用于IDE和命令行/ Windows资源管理器。

另一种可能的解决方案 - 在open()来电中设置正确的档案路径。出于测试/教育目的,您可以对其进行硬编码,但实际上这不是一种好的软件开发方式。

答案 1 :(得分:0)

不确定这是否会有所帮助,但我想简单地打开一个文本文件进行输出,然后重新读回来.Visual Studio(2012)似乎让这很困难。我的解决方案如下所示:

&#13;
&#13;
{{1}}
&#13;
&#13;
&#13;