【发布时间】:2021-01-29 03:07:11
【问题描述】:
在许多黑客马拉松中,他们提供了测试用例。因此,在这些测试用例中,它们通过 STDIN 以不同的方式提供输入。这是我最挣扎的情况之一。
这是一种输入:(这是一个测试用例)
Mike
John
Ahmed
Sangha
Daniel
Ann
所以这里我有 6 个输入。但他们不提供输入的数量。所以我不能使用for loop 或while loop 来接受这个输入。因为我不知道我应该做多少次迭代。所以我必须接受输入直到结束。但这不是来自文件的输入。所以我也不能使用EOF。此输入来自 STDIN。那么我怎样才能接受这种输入并将其存储在一个数组中呢?另外我不知道应该在数组中创建多少元素。因为我不知道有多少输入。 (不同的测试用例可能包含不同数量的输入)。我该如何解决这种问题?
非常感谢您的帮助!
【问题讨论】:
-
使用
fgets()用于C 或std::getline()用于C++ 的while 循环。 -
将问题分解为更小的问题。为什么它必须是一个数组,而不是其他容器?链表可以解决这个问题,它是每个程序员都应该知道如何创建的东西。如果你在编译时就知道元素的数量,你能解决整个问题吗?如果您在输入之前的运行时就知道它会怎样?你知道如何放大数组吗?
-
@tadman 我会将其更改为 c++。感谢您的告知。
-
在 C++ 中,您拥有像
std::string这样的工具,可以与std::vector或std::list结合使用,而在 C 中,您会得到 nothing。您几乎必须自己制作所有东西 -
在 C++ 中,您的输入流将无法通过
if检查您是否到达流的末尾。您基本上可以使用while (input)并使用getline()阅读。将其与push_back组合成std::vector,您就差不多完成了。
标签: c++ user-input stdin