【发布时间】:2018-12-06 12:38:20
【问题描述】:
我需要从键盘读取可变数量的整数,以便我可以使用它们中的每一个。
首先我认为我可以使用类似的东西
int myinteger;
for (int i=0; i<MAX_NUMBER_OF_INTEGERS; i++){
cin >> myinteger;
//What I want to do with that Integer
}
但后来我意识到如果 MAX_NUMBERS_OF_INTEGERS = 10 我必须写 10 个整数。但我想要的是我可以传递“1 2 3”“1 2 3 4”(例如)而不需要写 10 个整数。
【问题讨论】:
-
恕我直言,最简单的方法是将一个值定义为输入标记的结尾。可能是,假设 -1 不是与您的问题有关的有效整数,则类似于“输入 -1 以完成”。或者,您可以读取整数,直到输入失败,例如
for (int value; cin >> value;) { /* store value */ }. -
你可以使用 while (cin >> myinteger) { // do something with myinteger } 并让用户在 Linux 上按
ctrl-d或在 Windows 上按ctrl-z来结束输入。 -
谢谢你们,但我认为这对我不起作用,因为“用户”是检查我的程序是否有效并输出正确结果的在线法官
-
@Uwunt 那么您必须修改您的问题以准确说出您想要的内容。我们 3 个人都认为您不想要固定的最大值,因此我们为您提供了允许用户输入任意数量的数字并表示已完成的方法。
-
@Uwunt 老实说,这仍然很不清楚。你想在哪里传递最大数量?作为函数参数还是您希望用户通过输入输入最大数量?使用我的解决方案,您可以通过键入非数字字符来中止 inout。所以你不必写尽可能多的 MAX 值。如果这不是你想要的,你必须更精确