0

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

画面にランダムな文字を描画する方法を探しています。タスクを2つの部分に分けました...

(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;

そうすることで、次のエラーが表示されます。この件に関するあなたの考えを聞きたいです。

編集.....

以下は、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 に答える