Xcode新手无法用c ++打开文件?

use*_*255 39 c++ xcode

我一直在使用我正在上课的窗口,但我正在尝试运行一个基本代码来弄清楚如何从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;


}
Run Code Online (Sandbox Code Playgroud)

小智 70

将.txt文件放在main.cpp文件所在的同一目录中(或任何您喜欢的文件).

在Xcode中,转到产品>方案>编辑方案>运行测试(在右侧)>选项(中间顶部)

在选项下,选中"使用自定义工作目录"并将其设置为.txt文件所在的目录.

要使用这些文件,您只需指定文件名,例如in_file.open("inputFile.txt"); 没有道路是必要的.


SSt*_*eve 27

这是一个完全不同的方法:让Xcode为您复制输入文件.

  • 在Xcode中选择您的项目
  • 选择Build Phases
  • 单击"+"按钮以创建新的构建阶段

步骤1-3

  • 选择新建复制文件构建阶段

第4步

  • 选择产品目录
  • 单击"+"按钮添加文件

步骤5-6

  • 单击添加其他

第7步

  • 选择输入文件,然后单击" 打开"

第8步

  • 选中Copy items ...复选框,然后单击Finish

第9步

现在,每次构建项目时,输入文件都将被复制到与可执行文件相同的文件夹中,无论它在何处构建.当然,要查看输出文件,您仍需要在Finder中找到可执行文件.


bam*_*s53 5

答案并没有真正解释问题,所以我认为我会这样做。

当您将诸如“ inputFile.txt”之类的相对路径传递给文件API 时,在执行程序时会将其视为相对于工作目录的相对路径。通常,使用cmd.exe或Terminal.app或命令行时,这与“工作目录”相同。Unix命令pwd(“打印工作目录”)显示当前工作目录。在Windows上运行cd不带参数的命令将执行相同的功能。(在Unix上cd,不带任何参数的运行会将工作目录更改为用户的主目录。)

从命令行运行程序时,命令行外壳会设置程序的工作目录。当您在IDE中运行程序时,IDE会设置工作目录。由于与命令行不同,对于将IDE设置为工作目录的问题没有明显的答案,因此Visual Studio和Xcode默认将工作目录设置为不同的位置:Visual Studio将工作目录设置为$(ProjectDir),包含Visual的目录Studio项目文件;Xcode将工作目录设置为构建产品目录,即可执行文件被写入的位置。

您的问题的一些可能的解决方案是:

  1. 不要使用相对路径,因此不要依赖于工作目录。这对于使程序更具可移植性并没有太大帮助,因为平台之间的绝对路径也将有所不同,因此您仍然必须为每个平台“配置”程序。实际上,使用绝对路径会更糟,因为这意味着您的源代码必须有所不同,而最好将这种差异限制在每个平台的构建配置中。

  2. 配置IDE以使用所需的工作目录。可以通过右键单击项目,选择“配置属性”>“调试”>“工作目录”,然后将工作目录设置为所需的路径(可能使用Visual Studio构建变量)来配置Visual Studio。

    nepete的答案描述了如何配置Xcode直接设置的工作。

  3. 配置IDE的构建过程,以将数据文件复制到适当的位置。在Visual Studio中,您可以在C ++项目中通过配置项目的“属性”>“配置属性”>“生成事件”来执行此操作。

    SSteve的答案涵盖了如何在Xcode中配置其他构建步骤。


SSt*_*eve 2

我猜您在包含源代码的文件夹中有 inputFile.txt 。那是行不通的。您需要将其放入包含生成的可执行文件的文件夹中。要找到该文件夹​​,请右键单击“产品”下的应用程序,然后选择“在 Finder 中显示”

在此输入图像描述

此图显示了命令行程序的外观。它还显示已打开的 Finder 窗口。如您所见,它是与包含源代码的文件夹不同的文件夹。

命令行版本