【问题标题】:Command to run C++ with input from file [closed]使用来自文件的输入运行 C++ 的命令 [关闭]
【发布时间】:2013-07-06 01:50:30
【问题描述】:

myC.cpp

#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
    freopen("input.txt","r",stdin); // All inputs from 'input.txt' file

    int n,m;
    cin>>n>>m;
    cout<<(n+m)<<endl;
    return 0;
}

文件input.txt 可能包含:

Input.txt

10 20

用于构建和运行代码的命令行-

g++ myC.cpp -o myC
myC

它从input.txt 文件获取输入,产生输出30

现在我正在寻找一个同样可以从文件中获取输入的命令,但希望避免在代码中使用 freopen()。

可能是这样的-

g++ myC.cpp -o myC  // To compile
myC -i input.txt    // To run with input

【问题讨论】:

  • 我认为你不明白编译器的作用......
  • 如果您删除freopen 行,您可以以myC &lt; input.txt 调用您的命令。我不认为你真的想以某种方式将input.txt 编译到你的程序中。
  • 你的意思是myC &lt; input.txt吗?
  • 你混合了两个概念,代码的编译和运行。编译器不知道如何执行你的代码
  • 问题必须表明对正在解决的问题有最低限度的了解。

标签: c++ command


【解决方案1】:

从命令行调用程序时,您需要将输入文件通过管道传输到程序。考虑以下程序:

#include <stdio.h>

int main( void ) {

  int a, b;

  scanf( "%d", &a );
  scanf( "%d", &b );

  printf( "%d + %d = %d", a, b, ( a + b ) );

  return 0;
}

...假设我将它编译为“test.exe”,我将按如下方式调用它来管道输入文本文件。

./test.exe < input.txt

【讨论】:

  • @DeadMG 标记为 C 和 C++
  • 标记了他的评论,因为他没有阅读问题的标签和拖钓。
  • 谢谢。我正是想要它... :)
【解决方案2】:

虽然没有单个命令可以做到这一点(编译器不会执行您的代码),但对于小型测试,我倾向于运行单个命令行,如果构建正确,它将编译并执行:

g++ -o myC myC.cpp && ./myC input.txt

当然,这需要更改您的程序,以便将文件名作为参数,但这应该足够简单。

【讨论】:

  • 这里input.txt的作用是什么。
  • 我想你想传递一个从中读取内容的文件。 your 代码中input.txt 的用途是什么?如果要进行标准输入,请删除参数并使用 shell 重定向
  • 但是没有freopen()就不行。
  • @MukkhoShukkhoManush:如果您删除 freopen 并将调用替换为:./myC &lt; input.txt,shell 将读取 input.txt 并将其内容用作标准输入。我提出的替代方案是创建一个std::ifstream,并使用作为第一个参数传递的文件进行初始化,然后使用该流而不是std::cin。我见过很多读/写标准输入和文件的程序,这是我第一次记得freopen被使用。
  • 哇...谢谢... :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-02
相关资源
最近更新 更多