(使用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);
}
答案 0 :(得分: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);
答案 1 :(得分:0)
这与您的问题无关,但仍然很高兴知道:您需要这行代码:
srand ( time(NULL) );
在此之前
int launchCode1_random = rand() % 26;
char c1 = (char)(launchCode1_random+65);
cout << c1 << "\n";
否则你只会一遍又一遍地使用相同的随机字符。