在C ++中使用Visual Studio读取文本文件时出现问题

时间:2017-07-08 18:51:49

标签: c++ visual-studio file visual-studio-2015 fstream

我无法让Visual Studio读入文本文件。以下是我的代码。该文件在Unix环境中完美打开,但在复制并粘贴到Visual Studio时不起作用。我正在使用fstream打开文件。为什么文件没有被阅读?

当我运行程序时,它会构建,但我没有输出。我有一个输出语句cout << "inf\n"。所以甚至没有达到循环,这就是为什么我认为文件没有被读取。同样,当我在Unix环境中运行相同的代码时,输​​出语句会显示,并显示文件中的值(通过tree.insert(),tree.remove())。

我在this link中尝试了解决方案。正如它所建议的那样,我将工作目录更改为$(ProjectDir)\ Debug和$(ProjectDir)\ Release。此外,我将文本文件从Resources文件夹移动到解决方案资源管理器中的源文件夹。但是,该文件仍未被读取。

我还更新了我的代码,以便在fstream inf(“BTREE5_1.txt”)之后直接包含cerr << "Error: " << strerror(errno);。使用这行代码,我得到的输出是

Error: No such file or directory

有人可以解释一下原因吗?我的文本文件与我的代码位于同一文件夹中,如上所述。

#define _CRT_SECURE_NO_WARNINGS
#include <fstream>
#include <iostream>
#include <cstdlib>  
#include <cstdio>
#include "BTree.h"

using namespace std;

int main()
{
bool first = true;

BTree tree(6, 2);
int value;
char s[80], command;

ifstream inf("BTree5_1.txt");
cerr << "Error: " << strerror(errno);


inf.getline(s, 80);

while (inf >> command >> value)
{
    cout << "inf\n";
    if (command == 'i')
        tree.insert(value);
    else
    {
        if (first)
        {
            cout << "After all insertions.\n";
            tree.print();
            first = false;
        } // if first

        cout << "Deleting " << value << ". \n";
        tree.remove(value);
        tree.print();
        // fgets(s, 80, stdin);
    } // else deletion
} // while
system("PAUSE");
return 0;
}  // main

1 个答案:

答案 0 :(得分:0)

问题是我从Unix环境中复制并粘贴了我的文本文件。为了解决这个问题,我只是将文本文件从我的C驱动器放入我的目录。

ie&gt;)C:\ Users \ s.proctor \ Documents \ Visual Studio 2015 \ Projects \ ecs60 \ p2 \ p2 \ p2