Sign in to follow this  

drawString()

This topic is 4356 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I have a function like this:
void drawString (const char *s)    //How do display text 
{
  unsigned int i; 
  for (i = 0; i < strlen (s); i++)
    glutBitmapCharacter (GLUT_BITMAP_HELVETICA_18, s[i]);

};

and i want to call a function like this:
[source lange="cpp"]
drawString("Health");    //this line works just fine
drawString(player1.getHealth()+""); //player1.getHealth() returns an int

thats not possible because it says that i can't convert a const char to a char. How do i solve this problem? I tried different combinations of casting and maybe changing the drawString parameter but nothing seems to work. the function doesn't like me. :( why? BTW, thanks for putting up with all my questions. I know sometimes i ask a lot. :)

Share this post


Link to post
Share on other sites
Quote:
drawString(player1.getHealth()+""); //player1.getHealth() returns an int

You can not add an int and a char * string. You may change your drawString () function to:


//Draw a wsprintf () formatted text
#define MAX_STR_LEN (static_cast<unsigned int> (96))
void drawString (char const*const pFmtText, ...)
{
//Allocate memory for a temporary result string
char *const pTemp = static_cast<char *> (_alloca (MAX_STR_LEN * sizeof (*pTemp))) ;

//Pass these virtual arguments to vsprintf ()
va_list vaList ;
va_start (vaList, pFmtText) ;
int const TextLen = vsprintf (pTemp, pFmtText, vaList) ;
va_end (vaList) ;

unsigned int Counter = 0 ;
for (Counter = 0; Counter < TextLen ; ++Counter)
glutBitmapCharacter (GLUT_BITMAP_HELVETICA_18, pTemp[Counter]);
};
#undef MAX_STR_LEN


and you call drawString () as:
drawString ("The player health: %d", player1.getHealth()) ;

If you don't feel comfortable with these virtual arguments, you must convert player1.getHealth() to a string then pass it to your function.

Share this post


Link to post
Share on other sites
[quote]Original post by Skeleton_V@T
Quote:


If you don't feel comfortable with these virtual arguments, you must convert player1.getHealth() to a string then pass it to your function.


thats what i try to do. Like this:


std::ostringstream ostr; //turn int score into a string
ostr <<player1.getHealth();
std::string s = ostr.str();
drawString("Health"); //i have all the appropriate include statements
drawString(s);



but it won't let me do that. It says:

131 C:\Documents and Settings\mitchell\Desktop\Everything Game\MyGame.cpp cannot convert `std::string' to `const char*' for argument `1' to `void drawString(const char*)'

:?

Share this post


Link to post
Share on other sites

This topic is 4356 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this