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

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

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

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

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

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

为了确定,我已经:

  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;
}

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

这是我的输出:

失败。

程序以退出代码结束: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) 

最佳答案

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

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

关于c++ - 文件在多个程序中持续无法打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34100250/

相关文章:

c++ - g++ (cygwin) 中的多重声明错误

c++ - 如何在 C++ 中比较两个类型名是否相等?

ios - 如何在 swift 中使用 segue 发送用户信息以查看 Controller ?

Php Curl 发送文件和数组数据

file - Haskell 文件读取

c++ - 多重或虚拟继承下的类的内存布局和vtable(s)?

c++ - OpenGL 在调整窗口大小时保持对象形状

ios - UITapGestureRecognizer 快速对 UIImageView 进行操作

ios - 错误 : "could not dequeue a view of kind" in Objective-C

windows - 大文件的大量文件句柄 - 潜在问题?