C++ &引用;没有这样的文件或目录;在c+;中执行简单fstream时出错+;在使用makefile时

C++ &引用;没有这样的文件或目录;在c+;中执行简单fstream时出错+;在使用makefile时,c++,makefile,C++,Makefile,当我在主目录的顶部运行此命令时,出现错误“无此类文件或目录”: 编辑-这是我完整的.cpp文件: #include <iostream> #include <fstream> #include <sstream> #include "CommunicationNetwork.h" using namespace std; int DisplayMenu(); int main(int argc, char* argv[]) { ifstream fi

当我在主目录的顶部运行此命令时,出现错误“无此类文件或目录”:

编辑-这是我完整的.cpp文件:

#include <iostream>
#include <fstream> 
#include <sstream> 
#include "CommunicationNetwork.h"

using namespace std;

int DisplayMenu();

int main(int argc, char* argv[])
{
ifstream file;
string data;
file.open("message.txt");

if(file.is_open()){
    cout << "WORKS" << endl;
}else {
    cerr << "Error: " << strerror(errno) << endl;
}

CommunicationNetwork network;

bool gbye = false;
while(gbye == false){

    int use = DisplayMenu();

    switch(use) {
        case 1:
        network.buildNetwork();
        break;
        case 2:
        network.printNetwork();
        break;
        case 3: 
        network.transmitMsg("message.txt");
        break;
        case 4: cout << "Add" << endl;
        break;
        case 5: 
        cout << "Goodbye!" << endl;
        gbye = true;
    }
}

return 0;
}
txt文件与我的其他文件保存在同一文件夹中。无论我尝试什么.txt文件,我都会得到错误。如果需要更多信息,请告诉我。谢谢

编辑:

.cpp和.txt文件都位于文件夹
Assignment

对于message.txt:
/Users/tannerquigley/Library/Mobile Documents/com~apple~CloudDocs/School/CSCI 2270/Assignment

对于Assignment.cpp:
/Users/tannerquigley/Library/Mobile Documents/com~apple~CloudDocs/School/CSCI 2270/Assignment

在终端:
res1-131-132-dhcp:Assignment tannerquigley$make
运行make clean后


然后打开分配文件夹中显示的“com”可执行文件,不要运行文件夹中显示的Unix可执行文件。使用命令
/com
或您(I)在Makefile中为程序命名的任何东西从同一终端窗口运行程序。

几乎可以肯定,这与您的Makefile无关。makefile不需要知道程序打算打开哪些文件。您确定正在从
message.txt
所在的同一目录执行
com
?您能发布完整的代码、运行程序所键入的确切命令以及目录列表吗?您需要发布一个。重点是“完整”部分。@NateEldredge请检查我的编辑。“最小”和“完整”可能非常矛盾,但我发布了我的.cpp的其余部分。我愿意打赌,运行程序的工作目录不是您认为的目录。如果文件与可执行文件位于同一目录中,请尝试在
argv[0]
中从可执行文件中提取完整路径,并将当前目录更改为该目录,或将该路径前置为“message.txt”。当您“打开”可执行文件时,OSX专家可能会告诉我们使用的工作目录(你能更具体地说明如何“打开”它吗?)。如果你想检查工作目录是什么,你也可以在程序中调用
getcwd
。我同意@paddy的说法,它可能不是你想象的那样。
PROG = com
CC = g++
OBJS = CommunicationNetwork.o Assignment.o
CPPFLAGS = -Wall -std=c++11

$(PROG) : $(OBJS)
    $(CC) -o $(PROG) $(OBJS)
CommunicationNetwork.o : CommunicationNetwork.h
    $(CC) $(CPPFLAGS) -c CommunicationNetwork.cpp
Assignment.o :
    $(CC) $(CPPFLAGS) -c Assignment.cpp
clean:
    $(RM) $(PROG) $(OBJS)