c++ - 如何在 Xcode 5 中使用编辑方案将参数传递给 main.cpp

标签 c++ xcode xcode5

我以这个简单的代码为例:

#include <iostream>

int main(int argc, const char * argv[]){
    int a, b, c;
    std::cin >> a >> b >> c ;
    std::cout << a << " "<< b << " " << c;
}

我想将此代码传递给名为 file.txt 的文本文件中的参数“1 2 3”,该文件位于与 main 相同的文件中。

在 Product > Edit Schemes 中,我选择 Run Argument 侧栏选项,然后选择参数选项卡。在“启动时传递的参数”下,我输入 < file.txt 选择确定并运行我的程序。该程序构建并运行但不传递 file.txt 中的参数“1 2 3”。我还缺少其他设置吗?我是否将文件放在错误的文件夹中?真的很想完成这项工作,这样我就可以在大量数据上测试代码,手动输入这些数据会很烦人。

如果我 cout << argv[1] 如果我不引用,我会得到“<”。如果我确实引用了参数,我会得到“< text.txt。”

最佳答案

不幸的是,Xcode 并不像您要求的那样直接支持命令行文件重定向。参数用于在 main 中设置 argv vector 。当您在命令行上运行程序时,shell(通常是 /bin/bash)解释并设置重定向,并且不会将这些位作为参数传递给程序。 XCode 不使用 shell 来启动您的程序,也不设置重定向。

在不更改源代码的情况下,通过 Xcode 最接近的方法需要两个步骤:

  1. 在您方案的运行设置中,在“信息”选项卡中,将可执行文件设置为 /bin/sh。您需要从弹出菜单中选择“其他...”以打开“打开”对话框,然后键入 /bin/sh。当您在打开对话框中键入 / 时,您将看到一个弹出文本框。

  2. 在“参数”选项卡中,添加此参数:

    -c "$TARGET_BUILD_DIR/$EXECUTABLE_PATH < /path/to/text.txt"
    

    /path/to/text.txt 替换为您的输入文件的路径。

这将运行一个 shell,并要求 shell 使用输入重定向运行您的程序,但是您会发现 Xcode 会忽略您的断点,这使得调试您的程序变得困难。

关于c++ - 如何在 Xcode 5 中使用编辑方案将参数传递给 main.cpp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22262828/

相关文章:

iphone - "Tesseract OCR API"是否有可用的 "IOS SDK 7.0"?

iOS - 刷新控制 - "Attempting to change the refresh control while it is not idle is strongly discouraged and probably won' 无法正常工作。”

c++ - 生成 url 的唯一哈希键

c++ - 调用DocumentProperties时缓冲区不足,全局解锁也不会解锁

c++ - 位操作 : compute sum over all bits (aka number of 1's) in a uint64_t

ios - 使用几天后应用程序打不开

iphone - 如何在 iOS 较高的设备上使用较低的 SDK 调试 iOS 应用程序构建

swift - 尝试在 View Controller 和 TableView Controller 之间传递数据时应用程序崩溃

c++ - 运行时解释器真的是 C 程序执行的一部分吗?

xcode - 为什么 Xcode 5 助手编辑器默认为 .m 文件