C++ 如何在windows上的命令行中读取input.in文件

C++ 如何在windows上的命令行中读取input.in文件,c++,C++,我完成了我的代码,但问题是我不知道如何根据给出的指令进行测试 讲师向我们提供了如下所示的3输入文件: C:\Assignment> Test.exe file1.in file2.in file3.in 33 20 5.7 18 15 左边是假定的到达时间 右边是处理时间 我应该获取这些值并用这些存储的值创建事件对象。问题是,讲师在Ubuntu上给出了测试方法,她展示了如何在命令行中输入文件,如: uname@hostname: ~$ ./sApp < simulationShuf

我完成了我的代码,但问题是我不知道如何根据给出的指令进行测试

讲师向我们提供了如下所示的
3
输入文件:

C:\Assignment> Test.exe file1.in file2.in file3.in
33 20

5.7

18 15

左边是假定的到达时间
右边是处理时间

我应该获取这些值并用这些存储的值创建事件对象。问题是,讲师在
Ubuntu
上给出了测试方法,她展示了如何在命令行中输入文件,如:

uname@hostname: ~$ ./sApp < simulationShuffled3.in
这一点包含在主要文件中 main看起来像int main(),它实际上不包含任何argv,argc 它只包括

#include <iostream>

#include <sstream>
#包括
#包括

没有别的,没有流或者其他的。所以我真的不知道如何输入文件并读取它。好吧,因为这是一项作业,我不会给你们提供现成的代码。相反,我会给你指出正确的方向

在Windows中,您可以在
命令提示符
上为可执行文件提供由空格分隔的参数,如下所示:

C:\Assignment> Test.exe file1.in file2.in file3.in
而且,它也可以在Ubuntu上运行

所以,您需要研究
命令行参数
文件处理
,从文件读取;并且,您必须将这些从文件读取的字符串转换为整数

命令行参数:

文件处理:

这里有一个从文件读取的最小示例(
std::ifstream
):

我在
C:\test\test.txt
上有一个测试文件,内容如下:

11 22
12 23
23 34

下面是测试它的
main.cpp

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

int main( int argc, char *argv[] )
{
    const std::string filename { R"(C:\Test\Test.txt)" };

    std::ifstream ifs { filename };
    if ( !ifs.is_open() )
    {
        std::cerr << "Could not open file!" << std::endl;
        return -1;
    }

    int arrivalTime    { 0 };
    int processingTime { 0 };

    while ( ifs >> arrivalTime >> processingTime )
    {
        std::cout << "Arrival Time : " << arrivalTime << '\n'
                  << "Processing Time : " << processingTime << std::endl;
    }

    ifs.close();
    return 0;
}
#包括
#包括
#包括
int main(int argc,char*argv[])
{
常量std::字符串文件名{R“(C:\Test\Test.txt)”;
std::ifstream ifs{filename};
如果(!ifs.is_open())
{
标准::cerr到达时间>>处理时间)
{
std::无法在windows中从终端读取输入
您可以通过多种方式执行此操作:

1:在Windows Cmd中 使用cpp二进制

more input.in | ./a.exe
用python

more input.in | python file_requiring_input.py 
或者在围棋中

more input.in | go run file_requiring_input.go 
或在节点中

more input.in | node file_requiring_input.js
我将只在这里使用python

我使用python来保持它的简单性,因为很多人都理解python。它与其他语言类似

type
的工作原理与
more

2:在Powershell中 gc是Get Content(获取内容)的缩写。它基本上按照其名称进行操作。如果您想了解更多类型:
help gc
或powershell中的
help Get Content

|-传递内容的管道。类似于linux

您还可以在powershell中使用
more
以及
cat

cat input.in | python file_requiring_input.py 
3:对windows使用wsl 您可以安装wsl for windows并直接从windows运行linux命令

python file_requiring_input.py < input.in
python文件\u需要\u input.py
我遵循了课程中的一个示例代码,其中涉及到使用stringstream ss(aLine)它涉及到同样类型的输入文件方法。我之前考虑过参数,但所使用的代码根本没有使用它,是否有其他资源我应该研究一下solution@Lawdevo:请在您的问题中添加此代码。现在,您不必使用
cin
,因为您将阅读
从文件中删除。而且,由于您只是在阅读,您可以使用
std::ifstream
。@Lawdevo:我已经用
std::ifstream
的一个例子更新了我的答案。您不必使用
std::ssstream
。它并没有真正解决我的问题,但这是我一直在思考的想法之一,很高兴我有了某种代码洞察力事实证明,我只需要在命令行中使用代码中的stringStream/getline来执行sApp.exealias
python file_requiring_input.py < input.in