我完成了我的代码,但问题是我不知道如何根据给出的指示对其进行测试。
教师向我们提供了3
输入文件,如下所示:
33 20
5 7
18 15
左边是假设的到达时间
右边是处理时间
我应该使用这些值并使用这些存储的值创建事件对象。问题是教师在Ubuntu
上给出了测试方法,她展示了如何在命令行中输入文件,如:
uname@hostname: ~$ ./sApp < simulationShuffled3.in
所以我真的很困惑我是怎么想让它运转起来的。我目前正在使用Windows控制台,VStudios和带有终端附件的sublime文本。
我知道对大多数人来说这是一个非常愚蠢的问题,但我不知道该怎么做。感谢阅读,我希望我能尽快得到回复。
我正在使用的代码是我的课程笔记中的一个例子
//while (getline(cin >> ws, aLine)) { // while (there is data)
// stringstream ss(aLine);
// ss >> arrivalTime >> processingTime;
// Event newEvent = Event('A',arrivalTime,processingTime);
// eventPriorityQueue.enqueue(newEvent);
//}
这包含在主要内容中 并且main看起来像int main(),它实际上并不包含任何argv,argc 它只包括
#include <iostream>
#include <sstream>
没有别的,没有fStream或任何东西。所以我真的不明白如何输入文件并阅读它
答案 0 :(得分:1)
嗯,因为这是一项任务,我不打算为您提供现成的代码。相反,我只是指出你正确的方向。
在Windows中,您可以像Command Prompt
上的空格一样为可执行文件提供参数:
C:\Assignment> Test.exe file1.in file2.in file3.in
而且,它也适用于Ubuntu
。
所以,你需要学习Command Line Arguments
,File Handling
,从文件中读取;并且,您必须将从文件读取的这些字符串转换为整数。
命令行参数: http://en.cppreference.com/w/c/language/main_function
文件处理: http://en.cppreference.com/w/cpp/io/basic_fstream
以下是从文件(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;
}
<强>输出:强>
到达时间:11
处理时间:22
到货时间:12
处理时间:23
到货时间:23
处理时间:34
答案 1 :(得分:0)
您可以通过三种方式做到这一点:
input.in 或 input.txt 或任何文件都可以
type input.in | python file_requiring_input.py # in python
type input.in | go run file_requiring_input.go # in go
type input.in | node file_requiring_input.js # in js
javac file_requiring_input.java &&
type input.in | java file_requiring_input # in java
g++ file_requiring_input.cpp &&
type input.in | a.exe # in cpp
gcc file_requiring_input.c &&
type input.in | a.exe # in c
另一种方式
python file_requiring_input.py < input.in # in python
g++ file_requiring_input.cpp &&
a.exe < input.in # in cpp
<块引用>
从这里开始只使用 python 和 cpp 来保持简单。其他程序的一切都一样
gc .\input.in | python file_requiring_input.py # in python
g++ .\file_requiring_input.cpp ;
gc .\input.in | .\a.exe # in cpp
<块引用>
gc
是 Get-Content
的缩写。 gc
的其他别名是 cat
和 type
。
这意味着所有三个名称都可以用作替换或 gc
你可以为 windows 安装 wsl 并直接从你的 windows 运行 linux 命令
cat input.in | python file_requiring_input.py # in python
g++ file_requiring_input.cpp &&
cat input.in | ./a.out # in cpp
另一种方式
python file_requiring_input.py < input.in # in python
g++ file_requiring_input.cpp &&
./a.out < input.in # in cpp
后者是linux中最常用的方式。
已编辑代码,希望能测试所有内容。如果我错了或者还有什么要补充的,请纠正我
<块引用>通常 input.in 也是一个文本文件,因此您可以根据需要创建 input.txt 文件,并且效果相同