C ++(Visual Studio):尝试从.txt文件读取输入时不接受任何内容

时间:2017-04-20 23:39:07

标签: c++ visual-studio

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
string line = "test";
ifstream myfile("example.txt");
myfile.open("example.txt");

if (myfile.is_open())
{
    cout << line << "\n";
    cout << "File Opened\n";
    getline(myfile, line);
    cout << line;
    while (getline(myfile, line))
    {
        cout << line << '\n';
        cout << "test";
    }
    myfile.close();
}

else cout << "Unable to open file";

//return 0;
//getchar();
}

如果已经回答,请提前道歉,但是虽然我发现了几个非常接近我需要的答案,但我找不到这个具体问题的答案。

我是Visual Studio的新手,但过去曾涉足过c ++。我试图从文本文件读取数据(现在)只需用cout打印出来。但是,我没有看到任何结果。

起初我觉得我把我的txt文件放在了错误的地方 - 我做到了。最初我会收到第34行“无法打开文件&#34;”,表示无法打开该文件。所以我移动它,发现Visual Studio希望我放置文件的位置。

所以现在我成功地看到&#34;文件已打开\ n&#34;行打印到屏幕上,后面没有任何内容。我以为我可能会使用getline错误,但如果我替换文件输入&#34; myfile&#34;用&#34; cin&#34;相反,getline会很乐意整天读取键盘输入,所以不是这样。

所以我已经输入了一些打印出我的字符串值的测试cout语句。第一个打印出&#34; test&#34;正如它应该。然后我读了一行txt文件到那个字符串变量,当我再次cout它时我什么都没得到。它是一个空白字符串。

此外,该行&#34; cout&lt;&lt; &#34;测试&#34 ;; &#34;从循环内部也不打印。所以循环似乎没有发生,似乎。

所以,尽管我可以说,程序能够找到我的文本文件example.txt。但它实际上并没有看到内容。

文本文件的内容(以及我要打印的程序)如下:

&#34;这是第一行

这是第二行

第三

第五&#34;

非常感谢任何和所有帮助。

2 个答案:

答案 0 :(得分:1)

想出来。

这条线出了什么问题:

ifstream myfile("example.txt");

我不确切知道原因,但是因为我指定要在下一行打开的文件(myfile.open(&#34; example.txt&#34;);),指定文件路径ifstream声明导致了这个问题。

我没有完全理解它,因为其他人已经说过代码运行正常。但无论如何,这似乎都有效。

如果我有任何理由不能使用此解决方案,请告知我们。

答案 1 :(得分:0)

你可能想看一下你的文件打开 &#34; myfile.open(&#34;&example.txt的#34);&#34;我发现如果你不给文件路径发生奇怪的事情。  myfile.open(&#34; C:\测试\ example.txt文件&#34); 是我对代码所做的调整,它就像一个梦想。