Как использовать случайную строку для строки заголовка окна? - PullRequest
0 голосов
/ 28 марта 2012

Я хочу, чтобы строка заголовка моей программы была случайной строкой из массива.Я использую FreeGLUT для инициализации окна (функция "glutCreateWindow ()"), но я не уверен, как заставить его работать.

Вот что у меня есть:

std::string TitleArray[] = 
{
"Window title 1",
"Window title 2",
"Window title 3",
"Window title 4",
"Window title 5"
};
std::string wts = TitleArray[rand() % 6];

const char* WINDOW_TITLE = wts.c_str();

и вотвызов "glutCreateWindow ()":

glutCreateWindow(WINDOW_TITLE);

При каждом отладке строка заголовка пуста.Для функции glutCreateWindow () также требуется const char *, поэтому я не могу просто поместить переменную 'wts' в параметры.

1 Ответ

1 голос
/ 29 марта 2012

Не уверен, в чем проблема, кроме% 6 вместо% 5. Вот пример консольной программы, показывающей использование rand ():

#include "stdafx.h"
#include <string>
#include <iostream>
#include <time.h>

std::string TitleArray[] = 
{
"Window title 1",
"Window title 2",
"Window title 3",
"Window title 4",
"Window title 5"
};

using std::cout;
using std::endl;

int _tmain(int argc, _TCHAR* argv[])
{
    srand ( time(NULL) ); // seed with current time
    for(int i=0; i<20; ++i)
    {
        std::string wts = TitleArray[rand() % 5];
        cout << wts.c_str() << endl;
    }
    return 0;
}


Console output:

Window title 3
Window title 4
Window title 5
Window title 2
Window title 4
Window title 4
Window title 1
Window title 3
Window title 2
Window title 1
Window title 2
Window title 1
Window title 2
Window title 5
Window title 4
Window title 5
Window title 3
Window title 1
Window title 4
Window title 1
Press any key to continue . . .

Если вы пропустите srand () или всегда будете использовать одно и то же семя, вы будете получать одинаковый результат для каждого запуска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...