【问题标题】:Files Continually Fail to Open in Multiple Programs文件在多个程序中不断打开失败
【发布时间】:2015-12-05 01:34:16
【问题描述】:

上周,我无法在 Xcode 中打开文件。我想了解它为什么不起作用,以及如何解决它。

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

此外,我还有另一个程序here 可以很好地打开文件,没有任何问题...我不知道为什么一个正在打开文件,而另一个没有。 (提醒一下,我最近的程序都没有打开文件。)

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

为了确定,我已经:

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

这是一个简单的程序,它应该打开一个文本文件,然后打印内容,即“testing 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) 

【问题讨论】:

  • 您是否尝试过提供文件的完整路径?
  • @AndersKarlsson,谢谢 - 它在上面的程序中工作......我不想宣布成功,直到我在我的所有程序中测试了它。今天晚些时候我会更新。
  • @AndersKarlsson,虽然它可以让程序工作,但我也在寻找为什么,突然,Xcode 以前还可以,但现在想要整个文件路径。
  • 我认为问题可能出在 xcode 之外,缺少搜索路径?

标签: c++ xcode file c++11 file-handling


【解决方案1】:

简短的回答是,我的项目已损坏,因为它试图在先前项目已经存在的路径中运行项目。一旦我完全删除了两者并重新开始,我的程序就可以正常工作了。

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

【讨论】:

    猜你喜欢
    • 2017-12-28
    • 1970-01-01
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 2016-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多