我一直在使用窗口在一个类我一直在采取,但我试图运行一个基本的代码,以找出如何打开/关闭/输入/输出的文件在Xcode和代码,我通常使用的视觉工作室是不工作的任何想法为什么?谢谢!
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream fin;
ofstream fout;
string input;
fin.open("inputFile.txt");
if(fin.fail())
cout << "File failed to open." << endl;
fin >> input;
fout.open("outputFile.txt");
fout << input;
}
6条答案
按热度按时间kupeojn61#
将.txt文件放在main.cpp文件所在的同一目录中(或任何您喜欢的位置)。
在Xcode中,进入产品〉方案〉编辑方案〉运行(左侧)〉选项(顶部中间)
在“工作目录”选项下,选中“使用自定义工作目录”,并将其设置为.txt文件所在的目录。
要使用这些文件,您必须只指定文件名,例如
in_file.open("inputFile.txt");
,不需要路径。tzcvj98z2#
这里有一个完全不同的方法:让Xcode为您拷贝输入文件。
指令集
现在,每当您构建项目时,输入文件都会被复制到可执行文件所在的文件夹中,而不管它是在何处构建的。当然,要查看输出文件,您仍然需要在Finder中找到可执行文件。
muk1a3rh3#
答案并不能真正解释问题,所以我想我会这样做。
当你传递一个相对路径比如“inputFile.txt”给文件API时,当程序被执行时,它被当作相对于 * 工作目录 *。这和你使用cmd.exe或www.example.com或一般的命令行时的“工作目录”是一样Terminal.app的。Unix命令
pwd
(“打印工作目录”)显示当前工作目录。在Windows上运行不带参数的命令cd
执行相同的功能。(在Unix上,运行不带参数的cd
会将工作目录更改为用户的主目录。)当您从命令行运行程序时,命令行shell会设置程序的工作目录。当您从IDE中运行程序时,IDE会设置工作目录。与命令行不同,IDE应该将什么设置为工作目录并没有明确的答案,因此Visual Studio和Xcode默认情况下会将工作目录设置为不同的位置:VisualStudio将工作目录设置为
$(ProjectDir)
,该目录包含VisualStudio项目文件; Xcode将工作目录设置为构建产品目录,即写入可执行文件的位置。以下是一些可能的问题解决方案:
1.不要使用相对路径,因此不要依赖于工作目录。这对程序的可移植性没有多大帮助,因为绝对路径在不同的平台上也是不同的,所以你仍然需要为每个平台“配置”程序。事实上,使用绝对路径更糟糕,因为这意味着你的源代码必须不同。而最好将这种差异限制在每个平台的构建配置中。
1.将IDE配置为使用所需的工作目录。可以通过以下方法配置Visual Studio:右键单击项目,选择“配置属性”〉“调试”〉“工作目录,”然后将工作目录设置为所需的路径(可能使用Visual Studio生成变量)。
nepete's answer说明如何配置Xcode直接设置的工作。
1.配置IDE的生成过程以将数据文件复制到适当的位置。在Visual Studio中,可以通过配置项目的“属性”〉“配置属性”〉“生成事件”在C++项目中执行此操作。
SSteve's answer介绍了如何在Xcode中配置其他构建步骤。
93ze6v8z4#
我猜你在包含源代码的文件夹中有inputFile.txt。这是行不通的。你需要把它放在包含生成的可执行文件的文件夹中。要找到该文件夹,请右键单击产品下的应用,然后选择在Finder中显示。
此图像显示了命令行程序的外观。它还显示了打开的Finder窗口。如您所见,它与包含源代码的文件夹不同。
b09cbbtk5#
按照nepete的建议,编辑方案,但是使用$PROJECT_DIR作为自定义工作目录。这有助于移动项目,或者在两个不同的环境中工作(例如,家庭和办公室)。
顺便说一句,$PROJECT_DIR是Xcode环境变量之一,也有助于将文件名作为命令行参数传递给程序(可在方案中的“参数”下设置)。
isr3a4wc6#
今天我也遇到了同样的问题,我想把C代码添加到我的Swift项目中,但是我的文件指针总是空的。
不幸的是,在XCode 9 for iOS应用程序中,我无法更改工作目录。更改构建阶段也没有帮助我。经过4个多小时的反复试验,这是我最后想到的,它起作用了:
1.在将文件复制到XCode时,我选择了“创建组”,但我需要选择“创建文件夹引用”:
1.我创建了一个新的objective-c文件(.m),并将我所有的C代码复制到那里。
1.我没有修改.h文件(XCode生成的桥接头文件和我自己的带有公共函数声明的.h文件)。
1.在我的dict.m文件中替换以前的普通c
fopen
部分:我添加了obj-C代码:
现在它可以正常工作了!太神奇了!
ps我决定写这个答案,以防它会帮助像我这样的人,并将保存他们一些时间。如果你知道如何在XCode 9的iOS中更改工作目录,请给我留下评论-现在我真的很好奇为什么我找不到它。