垃圾来自简单的阅读

时间:2011-04-20 22:08:25

标签: c++

int test = 0;
ifstream inFile;
inFile.open("hat.txt");
inFile >> test;
cout << test;

我在.exe运行的调试文件夹中有该文件,该文件的文件是hat.txt。它只有一个数字。我的问题是,当我输出时,为什么我会得到垃圾?

编辑 - 添加了失败线,它确实失败了。它为什么失败?


int test;
ifstream inFile;
inFile.open("hat.txt");
if ( inFile.fail() )
{
    cout << "It Failed" << endl;
}
inFile >> test;
cout << test;

4 个答案:

答案 0 :(得分:2)

现在您的代码检查失败了。

为什么会失败?可能该文件不存在或具有错误的权限。

我运行了这段代码。

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    int test;
    std::ifstream inFile;
    inFile.open("hat.txt");
    if ( inFile.fail() )
    {
        cout << "It Failed" << endl;
    }
    inFile >> test;
    cout << test;
            return 0;
}

它工作正常。如果hat.txt不存在或无法读取,那么我会“失败”。如果没有失败的支票,我会得到随机数字。

我认为你的问题在于它无法读取文件。

答案 1 :(得分:1)

一个号码后面是否有行尾?众所周知,这会导致某些工具集出现问题。

答案 2 :(得分:0)

调试文件夹(您说hat.txt所在的位置)是否也是您的工作目录?
hat.txt是否以任何方式被锁定(例如在应用程序中打开)?

答案 3 :(得分:0)

默认情况下,您使用read或getline将文本读入字符串。您可以使用ios :: binary标志将ifstream更改为二进制。然后你可以设置一个缓冲区,然后阅读它。然后,您需要转换为输出为文本。