Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 相当于C++;(cin>;>;n)在德尔福_Delphi - Fatal编程技术网

Delphi 相当于C++;(cin>;>;n)在德尔福

Delphi 相当于C++;(cin>;>;n)在德尔福,delphi,Delphi,我需要从标准输入中读取未知数量的整数。我知道C++中可以很容易地实现: while ( cin >> n ) 有没有办法在德尔福实现同样的目标?这应该非常接近: while not EoF do Read(n); 您也可以编写自己的CIn函数来捕获任何错误输入,如下所示: function CIn(out I: Integer): Boolean; begin Result := False; if not EoF then begin try

我需要从标准输入中读取未知数量的整数。我知道C++中可以很容易地实现:

while ( cin >> n )

有没有办法在德尔福实现同样的目标?

这应该非常接近:

  while not EoF do
    Read(n);
您也可以编写自己的CIn函数来捕获任何错误输入,如下所示:

function CIn(out I: Integer): Boolean;
begin
  Result := False;
  if not EoF then begin
    try
      Read(I);
    except
      Exit;
    end;
    Result := True;
  end;
end;
请注意,
Read
仅在行结尾或文件结尾可用时返回。因此,当一行中有多个整数时,在给定行结束时将返回第一个整数


<>我也应该提到C++函数的行为比用Delphi内置方法所能完成的复杂得多。如果您能列出任务的具体要求以提供固溶体,这将有所帮助

带有while或repeat循环的ReadLn()将起作用。您可以找到一个示例(使用Char,但概念相同),它在Delphi中有点复杂<按照@Ken的建议,code>ReadLn,读取整行并返回一个字符串,该字符串可能包含多个整数值。我不知道有什么东西可以直接与
cin>>n
相比。我认为您需要自己分析输入。@KenWhite,我想简单的读取可以工作,但我找不到while/repeat循环需要什么条件?您想要结束循环的任何条件。我不能告诉你那会是什么,因为我不知道你在做什么。你如何结束C++代码中的循环?@戴维:不,<代码> Read LN< /Cord>不返回字符串。代码>变量X:Integer=0;开始读取Ln(X);//输入9 WriteLn(X*10);//输出90个ReadLn;结束。这不一样。当没有更多的输入时,C++循环终止,或者输入不包含整数。MMM,“尤韦,我认为EOF只与文件一起工作,不是吗?”DavidHeffernan,注意“相当接近”。我用一个控制台应用程序进行了测试。输入无效数据会引发异常,但这实际上是意料之中的。当按下-Z/或-C.@Niklex时,循环终止。从程序的角度来看,输入类似于文件。另外,我们也可以编写“代码>而不是EOF做< /CODE >,因为编译器在没有参数的情况下假设输入。在C++变体中,无效的数据会导致循环终止,并且没有字符被提取。在这种情况下,Read会摘录吗?