0

我必须根据这些规则读取输入:

“输入由多行文本组成。有些行可能是空的。输入可以从文件中提供,使用一行,例如prog.exe < input.txt在这种情况下,操作系统会适当地指示输入的结尾。如果您输入输入使用键盘,通常有一种方法可以用一些控制键来表示输入结束,这取决于操作系统(例如,Ctrl+d在 Unix/Linux 风格的系统中,以及Ctrl+z在 Microsoft 系统中)。”

以前我一直这样做

while(getline(cin, data)) {
     if(data == "0") break;
     / * do stuff */
}

所以我可以读取任意多的行并进行计算,然后当我完成后只需键入 0 并结束我的程序。我尝试在 .txt 文件中每行输入一个内容列表,然后调用program.exe < myfile.txt但没有任何反应。

这是< file.txt在做什么?

像这样调用我的程序时,如何正确处理其中的内容?

ctrl当你点击+时,我怎样才能让它计算东西z

4

2 回答 2

1

解释你的练习文本:

使用command1 < file1executes command1, withfile1作为输入源(与键盘相反)。

这称为重定向标准输入。

std::cin将从键盘而不是键盘获取输入file1

输入文件的结尾类似于CTRL+ Z(在 Microsoft 系统上,在大多数其他系统上是 +)CTRLD一旦std::getline()到达文件末尾(或者你读到一行只有“0”),你将退出你的while-loop,然后你可以对data你收集的(并且可能存储在某个容器中)进行计算。

于 2012-04-28T01:24:12.923 回答
0

因为这听起来像家庭作业...

提示 1:>, <, <<,>>是 shell 的“输入/输出重定向”(Windows 上的 CMD)。

提示 2:getline 返回结果(RTFM 即http://linux.die.net/man/3/getline,如果您使用 C 版本或 C++ http://www.cplusplus.com/reference/string/getline/和对应的 istream 方法)

于 2012-04-28T01:20:51.400 回答