【问题标题】:Redirecting I/O in Xcode 4在 Xcode 4 中重定向 I/O
【发布时间】:2011-07-26 07:11:40
【问题描述】:

我刚刚安装了 Xcode 4,并试图将输入从文件重定向到我的 C++ 程序。我尝试在运行方案的“参数”部分中使用通常的“

谢谢!

萨默

【问题讨论】:

  • Xcode 4 似乎有很多初期问题 - 除非您需要通过 Mac App Store 分发应用程序,否则我建议坚持使用 3.2.6,直到我们至少达到 4.1。跨度>
  • 在 Xcode 5.1.1 (5B1008) 中,将 < /absolute/path/to/input.txt 添加到我的运行方案的“启动时传递的参数”也不起作用。
  • 更新到 Xcode 8

标签: c++ xcode io arguments


【解决方案1】:

我用各种类型的 Arguments 进行了测试,似乎 Xcode 有 Arguments 的错误(最后一次测试:Xcode 8)。

但是有一种替代方法可以模拟类似的效果。您必须使用环境变量。

使用您要重定向的文件名添加环境变量:

然后在您的代码中,您必须将此文件“重定向”到标准输入 (cin):

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main (int argc, const char * argv[])
{
    ifstream arq(getenv("MYARQ"));
    cin.rdbuf(arq.rdbuf());

    string value;
    cin >> value;
    cout << value;

    return 0;
}

就是这样……只有两行代码

ifstream arq(getenv("MYARQ"));
cin.rdbuf(arq.rdbuf());

这不是最好的解决方案,但是虽然 xcode 有这个问题,但这是唯一的解决方案!

【讨论】:

  • 对于环境变量的值,输入 test.txt 文件的完整路径(在 Mac 上,您可以简单地将文件拖到空间中)。截至 2017 年 2 月 9 日,这仍然是一个有效的解决方案!
  • 请编辑答案以说“XCode 8”,因为此解决方案适用于 OS Sierra。
  • @Max 感谢您的评论(以及在 Xcode 8 中对其进行测试) - 现在更新答案
  • 谢谢,我想让 OP 也将问题主题更改为 XCode 8。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-22
  • 1970-01-01
  • 1970-01-01
  • 2020-03-08
  • 2013-11-19
相关资源
最近更新 更多