Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;XCode上的ifstream:默认目录在哪里? 编辑方案_C++_Ifstream - Fatal编程技术网

C++ C++;XCode上的ifstream:默认目录在哪里? 编辑方案

C++ C++;XCode上的ifstream:默认目录在哪里? 编辑方案,c++,ifstream,C++,Ifstream,我试图打开一个文件(硬编码或从控制台中的用户输入),无论我尝试什么,它都会说该文件不会打开(通过错误检查) 我假设这是因为test.txt文件不在假定的根目录中,所以如果是这样,根目录是什么 以下是我目前的代码: //include files #include <iostream> #include <stdio.h> #include <fstream> using namespace std; //Global Variables short inp

我试图打开一个文件(硬编码或从控制台中的用户输入),无论我尝试什么,它都会说该文件不会打开(通过错误检查)

我假设这是因为test.txt文件不在假定的根目录中,所以如果是这样,根目录是什么

以下是我目前的代码:

//include files
#include <iostream>
#include <stdio.h>
#include <fstream>

using namespace std;

//Global Variables
short inputPicture[512][512];
short outputPicture[512][512];

//Function Prototypes
void getInput(char* in, char* out);
void initializeArray(ifstream* input);

//Main
int main(){
    //local variables
    char inputFile[32];
    char outputFile[32];

    ifstream input;
    ofstream output;


    getInput(inputFile, outputFile);
    cout << inputFile << endl;//test what was sent back from the function

    input.open(inputFile, ifstream::in);
    if (!input.is_open()){//check to see if the file exists
        cout << "File not found!\n";
        return 1;//if not found, end program
    }

    initializeArray(&input);

    return 0;
}//end Main

//Gets initial input from user
void getInput(char* in, char* out){
    cout << "Please designate input file: ";
    cin >> in;
    cout << "\nPlease designate an output file: ";
    cin >> out;
}//end getInput


//Sets the global array to the information on the input file
void initializeArray(ifstream* input){



}//end initializeArray
//包含文件
#包括
#包括
#包括
使用名称空间std;
//全局变量
短输入图片[512][512];
短输出图片[512][512];
//功能原型
void getInput(字符*输入,字符*输出);
void initializeArray(ifstream*输入);
//主要
int main(){
//局部变量
字符输入文件[32];
字符输出文件[32];
ifstream输入;
流量输出;
getInput(inputFile,outputFile);
不能根可执行文件在其中查找文件的目录不是文件系统的实际
/
根目录,而是可执行文件正在其中执行的目录…如果您使用的是Xcode,则该目录可能隐藏在Xcode为您的项目自动创建的一个生成目录中,而不是用户主文件夹或文件夹中主文件夹子目录,如
/Users/XXXXXX/Documents

“默认目录”是执行可执行文件的目录。通常,它与可执行文件位于同一文件夹中,但如果在可执行文件上拖放文件,则可以更改启动路径


如果您从IDE内部运行程序,路径也可能会更改。IDE启动可执行文件,因此不知道从何处执行。您必须找到它存储可执行文件的位置,并将文件放在其中,或者使用绝对路径。

默认目录应与应用程序的工作目录相对,这是通常是应用程序所在的同一个位置(调试器有时会弄乱)

对于简单的测试,只需在命令行(或代码)中指定一个绝对路径

要获取当前目录(要查看),可以使用
getcwd()
C函数(在C++中也可用)。类似于:

char * dir = getcwd(NULL, 0); // Platform-dependent, see reference link below    
printf("Current dir: %s", dir);
这应该会显示在控制台中。
getcwd
函数有一些变化,这取决于您在什么平台上运行,我没有在Mac上测试过,但这里有一些信息:

在Xcode(编写本文时为v7.1.1)侧栏中,有一个自动生成的名为“Products”的文件夹。在其中,您可以找到项目的可执行文件(假设您至少构建了一次项目)。右键单击它并选择“Show In Finder”。一个文件夹将在Finder中打开。这是程序的工作目录,您会注意到它实际上不在项目文件夹中

您可以让Xcode使用不同的目录。在顶部工具栏的左侧,在活动生成体系结构旁边显示您的项目名称,单击项目名称>编辑方案

然后在出现的工作表中查找名为“工作目录”的选项。勾选复选框,然后选择一个自定义目录。注意:确保“运行”选项是该工作表边栏中选中的选项。

, -getcwd(NULL,0)返回“/”。 -无法使用A解决方案路径。(它在部署的每个终端上都会更改。)

我通过Objc代码得到路径并将其投向C++函数。

[self cppFunc:[path UTF8String]];
1.将文件放在xcode项目的顶部目录中,并检查它们是否包含在“目标”->“构建阶段”->“复制捆绑资源”中

2.通过ObjC代码获取路径

NSBundle* bundle = [NSBundle mainBundle];
NSString* resourceDirectoryPath = [bundle bundlePath];
NSString* path = [resourceDirectoryPath stringByAppendingString: @"/"];
3.将其丢到C++函数。

[self cppFunc:[path UTF8String]];

4.可以在C++中生成一个烧录文件路径。

std::string file = path(arg) + "filename";

它对我很有用。

好的,我尽可能深入目录,但它仍然找不到文件…mac上的可执行文件是什么样子的?哈哈,也许我找错地方了。可执行文件在mac(或Unix)上没有扩展名,尽管有时它有一个.app扩展名,实际上是一个包(即,它是一种特殊的文件夹结构)。如果Xcode为您的文件创建了一个.app,那么右键单击它并选择
查看软件包内容
。其中将有一个
MacOSX
目录,该目录中将有一个
bin
目录。您的可执行文件应该在其中。否则,如果这是一个简单的命令行应用程序,那么Xcode should有一个默认的构建目录,用于创建编译后的二进制文件。要访问getcwd(),我需要包含什么标题?好的,它可以使用。谢谢。所以,当我打开这个程序时,如果我的教授使用PC运行该程序,我只需确保使用的test.txt和输出文件与.exe一起使用即可?(我知道,这是个愚蠢的问题,但我只是想确定一下。)您不应该需要应该创建的输出文件,我建议在您提交之前将任何绝对路径更改为相对路径。一旦您确定了它试图从何处加载并知道了预期结果,只需将输入文件放在正确的位置和/或包含说明。我可以确认这对xcode 12仍然有效:)