文件在多个程序中持续无法打开

Files Continually Fail to Open in Multiple Programs

本文关键字:程序 文件      更新时间:2023-10-16

上周,我无法在Xcode中打开文件。我想知道为什么它不起作用,以及如何修复它。

我在这里和这里的堆栈溢出中发布了两个问题,收到了很好的建议,但没有解决方案。

此外,我在这里有另一个程序,它可以很好地打开文件,没有问题。。。我不知道为什么一个在打开文件,而另一个没有。(提醒,我最近的程序都没有打开文件。)

{更新:在这篇文章之前检查了上面的程序,现在它失败了,说文件不存在…这个程序昨天运行了,我对它做了没有更改。我保证它能工作……那么为什么我突然出现文件问题?}

可以肯定的是,我已经:

  1. 转到构建阶段>>复制文件>>添加文件,将两个文件添加到绝对路径
  2. 检查了文件的拼写和我的代码

这里有一个简单的程序,应该打开一个文本文件,然后打印内容,这些内容是"测试1 2 3"-,除非它没有

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
    fstream inFile;
    string words;
    inFile.open("test.txt");
    if (!inFile) {
        cout << "Failure." << endl;
        exit(1);
    }
    getline(inFile, words);
    cout << words << endl;

    return 0;
}

这个程序每次都会失败(我的其他程序也是如此)。

这是我的输出:

Failure.

Program ended with exit code: 1

在语句inFile.open("test.txt");处设置断点,我得到:

Printing description of inFile:
(std::__1::fstream) inFile = {
  std::__1::basic_iostream<char, std::__1::char_traits<char> > = {
    std::__1::basic_istream<char, std::__1::char_traits<char> > = {
      std::__1::basic_ios<char, std::__1::char_traits<char> > = {
        std::__1::ios_base = {
          __fmtflags_ = 4098
          __precision_ = 6
          __width_ = 0
          __rdstate_ = 0
          __exceptions_ = 0
          __rdbuf_ = 0x00007fff5fbff4f8
          __loc_ = 0x00007fff7b718c30
          __fn_ = 0x0000000000000000
          __index_ = 0x0000000000000000
          __event_size_ = 0
          __event_cap_ = 0
          __iarray_ = 0x0000000000000000
          __iarray_size_ = 0
          __iarray_cap_ = 0
          __parray_ = 0x0000000000000000
          __parray_size_ = 0
          __parray_cap_ = 0
        }
        __tie_ = 0x0000000000000000
        __fill_ = -1
      }
      __gc_ = 0
    }
    std::__1::basic_ostream<char, std::__1::char_traits<char> > = {
      std::__1::basic_ios<char, std::__1::char_traits<char> > = {
        std::__1::ios_base = {
          __fmtflags_ = 4098
          __precision_ = 6
          __width_ = 0
          __rdstate_ = 0
          __exceptions_ = 0
          __rdbuf_ = 0x00007fff5fbff4f8
          __loc_ = 0x00007fff7b718c30
          __fn_ = 0x0000000000000000
          __index_ = 0x0000000000000000
          __event_size_ = 0
          __event_cap_ = 0
          __iarray_ = 0x0000000000000000
          __iarray_size_ = 0
          __iarray_cap_ = 0
          __parray_ = 0x0000000000000000
          __parray_size_ = 0
          __parray_cap_ = 0
        }
        __tie_ = 0x0000000000000000
        __fill_ = -1
      }
    }
  }
  __sb_ = {
    std::__1::basic_streambuf<char, std::__1::char_traits<char> > = {
      __loc_ = (__locale_ = 0x00007fff7b718c30)
      __binp_ = 0x0000000000000000
      __ninp_ = 0x0000000000000000
      __einp_ = 0x0000000000000000
      __bout_ = 0x0000000000000000
      __nout_ = 0x0000000000000000
      __eout_ = 0x0000000000000000
    }
    __extbuf_ = 0x0000000102001000 ""
    __extbufnext_ = 0x0000000000000000
    __extbufend_ = 0x0000000000000000
    __extbuf_min_ = ""
    __ebs_ = 4096
    __intbuf_ = 0x0000000000000000
    __ibs_ = 0
    __file_ = 0x0000000000000000
    __cv_ = 0x00007fff7b718a40
    __st_ = (__mbstate8 = "", _mbstateL = 0)
    __st_last_ = (__mbstate8 = "", _mbstateL = 0)
    __om_ = 0
    __cm_ = 0
    __owns_eb_ = true
    __owns_ib_ = false
    __always_noconv_ = true
  }
}
(lldb)  

并且在if(!inFile)处设置断点。。。我得到(在我看来完全一样):

  Printing description of inFile:
  (std::__1::fstream) inFile = {
  std::__1::basic_iostream<char, std::__1::char_traits<char> > = {
    std::__1::basic_istream<char, std::__1::char_traits<char> > = {
      std::__1::basic_ios<char, std::__1::char_traits<char> > = {
        std::__1::ios_base = {
          __fmtflags_ = 4098
          __precision_ = 6
          __width_ = 0
          __rdstate_ = 4
          __exceptions_ = 0
          __rdbuf_ = 0x00007fff5fbff4f8
          __loc_ = 0x00007fff7b718c30
          __fn_ = 0x0000000000000000
          __index_ = 0x0000000000000000
          __event_size_ = 0
          __event_cap_ = 0
          __iarray_ = 0x0000000000000000
          __iarray_size_ = 0
          __iarray_cap_ = 0
          __parray_ = 0x0000000000000000
          __parray_size_ = 0
          __parray_cap_ = 0
        }
        __tie_ = 0x0000000000000000
        __fill_ = -1
      }
      __gc_ = 0
    }
    std::__1::basic_ostream<char, std::__1::char_traits<char> > = {
      std::__1::basic_ios<char, std::__1::char_traits<char> > = {
        std::__1::ios_base = {
          __fmtflags_ = 4098
          __precision_ = 6
          __width_ = 0
          __rdstate_ = 4
          __exceptions_ = 0
          __rdbuf_ = 0x00007fff5fbff4f8
          __loc_ = 0x00007fff7b718c30
          __fn_ = 0x0000000000000000
          __index_ = 0x0000000000000000
          __event_size_ = 0
          __event_cap_ = 0
          __iarray_ = 0x0000000000000000
          __iarray_size_ = 0
          __iarray_cap_ = 0
          __parray_ = 0x0000000000000000
          __parray_size_ = 0
          __parray_cap_ = 0
        }
        __tie_ = 0x0000000000000000
        __fill_ = -1
      }
    }
  }
  __sb_ = {
    std::__1::basic_streambuf<char, std::__1::char_traits<char> > = {
      __loc_ = (__locale_ = 0x00007fff7b718c30)
      __binp_ = 0x0000000000000000
      __ninp_ = 0x0000000000000000
      __einp_ = 0x0000000000000000
      __bout_ = 0x0000000000000000
      __nout_ = 0x0000000000000000
      __eout_ = 0x0000000000000000
    }
    __extbuf_ = 0x0000000102001000 ""
    __extbufnext_ = 0x0000000000000000
    __extbufend_ = 0x0000000000000000
    __extbuf_min_ = ""
    __ebs_ = 4096
    __intbuf_ = 0x0000000000000000
    __ibs_ = 0
    __file_ = 0x0000000000000000
    __cv_ = 0x00007fff7b718a40
    __st_ = (__mbstate8 = "", _mbstateL = 0)
    __st_last_ = (__mbstate8 = "", _mbstateL = 0)
    __om_ = 0
    __cm_ = 0
    __owns_eb_ = true
    __owns_ib_ = false
    __always_noconv_ = true
  }
}
(lldb) 

简单的回答是,我的项目被破坏了,因为它试图在以前项目已经存在的路径中运行项目。一旦我完全删除了这两个,然后重新开始,我的程序运行得很好。

虽然我没有对原始项目进行任何更改,但我在同一目录中启动了一个新项目,这导致了我所有的问题。