C++ 如果文件在c+中为空,如何引发异常+;?

C++ 如果文件在c+中为空,如何引发异常+;?,c++,file,exception,C++,File,Exception,在下面的代码中,若文件为空,我将尝试打印消息,然后引发异常。考虑文件Tr.txt是空的。< /P> ifstream inputFile; try { inputFile.exceptions(ifstream::eofbit); inputFile.open("Text.txt"); if (inputFile.is_open()) { cout << "file opened"<<endl; } if

在下面的代码中,若文件为空,我将尝试打印消息,然后引发异常。考虑文件Tr.txt是空的。< /P>
    ifstream inputFile;
try 
{
    inputFile.exceptions(ifstream::eofbit);
    inputFile.open("Text.txt");
    if (inputFile.is_open()) {
        cout << "file opened"<<endl;
    }
    if (inputFile.peek()== ifstream::traits_type::eof())
    {
        cout << "file opened but it is empty or invalid 
    content" << endl;
    }
}
catch (ifstream::failure &e)
{
    cout << "Some issue with input file: " << e.what()<<endl;
    _exit(1);
}
ifstream输入文件;
尝试
{
异常(ifstream::eofbit);
inputFile.open(“Text.txt”);
if(inputFile.is_open()){

cout当文件存在且为空时,会发生此问题。 问题是您在以下行中启用了
eof
异常:
inputFile.exceptions(ifstream::eofbit);

它打开文件,因为它是空的,它会立即设置
eof
标志,您会得到一个异常。如果您注释掉这一行,它将正常工作

无论如何,我会用更短的方式编写相同的代码:

    ifstream inputFile("Text.txt");
    if (inputFile) 
    {
        cout << "file opened" << endl;
        inputFile.peek();
        if (inputFile.eof())
        {
            cout << "file opened but it is empty or invalid content" << endl;
        }
    }
ifstream输入文件(“Text.txt”);
如果(输入文件)
{

cout当文件存在且为空时,会发生此问题。 问题是您在以下行中启用了
eof
异常:
inputFile.exceptions(ifstream::eofbit);

它打开文件,因为它是空的,它会立即设置
eof
标志,您会得到一个异常。如果您注释掉这一行,它将正常工作

无论如何,我会用更短的方式编写相同的代码:

    ifstream inputFile("Text.txt");
    if (inputFile) 
    {
        cout << "file opened" << endl;
        inputFile.peek();
        if (inputFile.eof())
        {
            cout << "file opened but it is empty or invalid content" << endl;
        }
    }
ifstream输入文件(“Text.txt”);
如果(输入文件)
{

异常错误说明了什么?请将错误添加到原始帖子中。异常错误说明了什么?请将错误添加到原始帖子中。