C++ 无法读取文本文件

标签 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

最佳答案

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

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

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

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

关于C++ 无法读取文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13017847/

相关文章:

c++ - 有没有办法将类的私有(private)枚举值用作模板参数?

c++ - 没有 typedef 的可变参数扩展器

c++ - 命名管道上的 WriteFile 有时会返回 ERROR_NO_DATA

c++ - 我可以创建一个 auto_ptr 数组吗?

visual-studio-2010 - 使用 Oracle 客户端 64 位和 Visual Studio 2010 时出现 BadImageFormatException!

python - 仅读取某些行的文本文件以在 Python 中拆分文件

java - Java中用Scanner读取文本文件——Token的返回字符

perl - 提取具有不同分隔符的文本

c++ - 我应该对已经定义的智能指针使用 make_unique 还是 reset() ?

visual-studio - Visual Studio 2010 中的多行观察窗口?