0

(使用 C++、OpenGL/GLUT、Xcode、OSX)

我正在寻求将随机字符绘制到屏幕上的帮助。我把任务分成两部分......

(1) 我可以使用以下命令随机选择一个 UPPER_CASE 字母:

    int launchCode1_random = rand() % 26;
    char c1 = (char)(launchCode1_random+65);
    cout << c1 << "\n";

(2) 我可以使用以下方法在 OpenGL 中绘制字符串:

    string launchCode1 = "thing";
    void * fontlaunchCode1 = GLUT_BITMAP_9_BY_15;
    for (string::iterator i = launchCode1.begin(); i != launchCode1.end(); ++i)
    {
        char c = *i;
        glutBitmapCharacter(fontlaunchCode1, c);
    }

...但是,我想在上面的步骤 2 中写的是:

    string launchCode1 = c1;

这样做时,我收到以下错误:“没有从 'char' 到 'string' 的可行转换。从表面上看,这对我来说很有意义。但我不完全理解为什么或如何。如果有替代解决方法我没有看到,我很想听听你对这个问题的看法。

编辑.....

在 Pubby 的帮助下,这是最终的工作代码:

    int launchCode1_random = rand() % 26;
    char c1 = (char)(launchCode1_random+65);
    cout << c1 << "\n";

    string launchCode1 (1, c1);
    void * fontlaunchCode1 = GLUT_BITMAP_9_BY_15;
    for (string::iterator i = launchCode1.begin(); i != launchCode1.end(); ++i)
    {
        char c = *i;
        glutBitmapCharacter(fontlaunchCode1, c);
    }
4

2 回答 2

1

如果你想std::string从一个字符构造一个,你可以这样做:

string launchCode1(1, c1);

使用此构造函数:

string( size_type count, 
        CharT ch, 
        const Allocator& alloc = Allocator() );

http://en.cppreference.com/w/cpp/string/basic_string/basic_string

我不完全明白你在做什么。std::string如果你想要的只是一个角色,为什么还要费心呢?只需这样做:

int launchCode1_random = rand() % 26;
char c = (char)(launchCode1_random+65);
glutBitmapCharacter(fontlaunchCode1, c);
于 2012-12-12T22:31:24.470 回答
0

这与您的问题无关,但仍然很高兴知道:您需要这行代码:

srand ( time(NULL) );

在这一切之前

int launchCode1_random = rand() % 26;
char c1 = (char)(launchCode1_random+65);
cout << c1 << "\n";

否则,您将一遍又一遍地得到相同的随机字符。

于 2012-12-12T22:36:40.910 回答