【问题标题】:How to randomly display an user input string using c++? [closed]如何使用 C++ 随机显示用户输入字符串? [关闭]
【发布时间】:2019-08-05 19:22:38
【问题描述】:

我正在尝试使用 c++ 随机显示用户输入字符串,但我找不到方法。 目前我正在预定义一些字符串

#include<iostream>
#include<string>
#include<cstdlib>
#include<ctime>

using namespace std;

int main()
{ 
 srand(time(0));
 const string wordlist[4] = {"hi","hello","what's up","wassup"};
 string word = wordlist [rand()%4];
 cout<<word;
 return 0;
}

我想要的是:-我不想预先定义它们。我希望用户输入 4 个单词,然后我将显示用户给出的 4 个单词中的一个单词(随机)。

【问题讨论】:

  • stand(time(0)); ?使用std::cin 的一些示例应该在您最喜欢的c++ book 中使用std::cout 的示例旁边
  • 你到底在纠结什么?您似乎知道如何在数组中随机选择一个索引,是关于获取用户输入的问题吗?
  • @JoyDey “是的。我正在为用户输入而苦苦挣扎。”您可能想要一个std::vector&lt;std::string&gt; 来存储用户输入的单词
  • 如果字符串的数量始终为 4,std::array 可能比std::vector 稍微增加一点

标签: c++ codeblocks dev-c++


【解决方案1】:

为此,您必须首先从 wordlist 数组中删除 const 限定符。

srand(time(0));
std::vector<string> wordlist(4);
for(auto& s: wordlist) std::cin>>s;
string word = wordlist [rand()%4];
cout<<word;
  • 第 3 行是 C++11 的基于范围的 for 循环,这样我可以轻松循环 std::vector&lt;string&gt; 的元素而无需索引。

  • 如果字符串中有多个单词,则相应地使用getline(cin,s)。然后在新行中输入每个字符串。但是在混合使用cingetline 以获取输入时,请使用careful

  • 如果要按照 cmets 中的说明固定大小(即 4),您可以使用 std::array

【讨论】:

  • 从第一名的用户输入读取wordlist 看起来不是正确的方法。
  • 出现错误。 C++98 模式下不允许基于范围的“for”循环
  • 这不是一个好方法,对于新人来说也不是一个好的答案。哈哈
  • @πάνταῥεῖ 嗯...看起来它会起作用(至少在一定程度上)?
  • @M.K 我还有什么需要澄清的吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-29
  • 1970-01-01
  • 1970-01-01
  • 2020-12-29
  • 2014-06-16
  • 1970-01-01
相关资源
最近更新 更多