繁体   English   中英

c ++ - while循环,字符串和整数

[英]c++ - while loop, strings, and ints

我想创建一个用户输入几个名字的程序,然后选择一个随机名称。 但是,我无法弄清楚如何获取字符串。 我希望将每个字符串分配给一个int,然后选择一个int时,字符串也是如此。 请帮我。

    #include <iostream>
    #include <ctime>
    #include <cstdlib>
    #include <string>
    using namespace std;
    void randName()
    {
        string name;//the name of the entered person
        cout << "write the names of the people you want."; 
            cout << " When you are done, write done." << endl;
        int hold = 0;//holds the value of the number of people that were entered
        while(name!="done")
        {
            cin >> name;
            hold ++;
        }
        srand(time(0));
        rand()&hold;//calculates a random number
    }
    int main()
    {
        void randName();
        system("PAUSE");
    }

你可以使用std::vector<std::string>来存储你的名字,并以int作为索引。 然后使用随机选择其中一个名称。

你需要某种容器来存储你的名字。 vector是完美的。

std::string RandName()
{
  std::string in;
  std::vector<std::string> nameList;

  cout << "write the names of the people you want."; 
  cout << " When you are done, write done." << endl;       

  cin >> in; // You'll want to do this first, otherwise the first entry could
             // be "none", and it will add it to the list.
  while(in != "done")
  {
    nameList.push_back(in);
    cin >> in;
  }    

  if (!nameList.empty())
  {
    srand(time(NULL)); // Don't see 0, you'll get the same entry every time.
    int index = rand() % nameList.size() - 1; // Random in range of list;

    return nameList[index];      
  }
  return "";
}

正如billz所提到的,你的main()也有问题。 您想要调用您的函数,因此您不需要void关键字。 这个新函数也将返回一个字符串,因此它实际上很有用。

int main()
{
    std::string myRandomName = randName();
    system("PAUSE");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM