垃圾从一个简单的读取

Garbage from a simple read

本文关键字:一个 简单 读取      更新时间:2023-10-16
int test = 0;
ifstream inFile;
inFile.open("hat.txt");
inFile >> test;
cout << test;

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

EDIT -添加了失败行,它确实失败了。为什么会失败?


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

您的代码现在看起来很好,因为它有失败的检查。

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

我运行了这个代码。

#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不存在或无法读取,那么我得到"It failed"。没有失败的检查,我得到随机数输出。

我想你的问题是它不能读取文件

在一个数字之后是否有一个结束行?

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

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

相关文章: