Coming from an Actionscript background, i’ve become accustomed to being able to at will at any given point
tracing an object, or a value. It’s something i actually took for granted.
When I started using Cinder ( http://libcinder.org ) – and in the process doing C++. A language
at the time I had only barely used – but now i love. I realized that – trace, or speaking to my PHP background
printf is something that is not actually built in at all.
It’s something you have to turn into a c_string, which is basically a char* as i understand it.
Devnote: What is a Char* – it’s a pointer to the first character in a string of character, whose ASCI values ( 0 – 255 ) are mapped to strings.
How do you trace a value in C++, be it an interger, string, float, double, or class?
In C++ ( and C? ) – it’s not as straigh forward, but fortunately we have something called operators.
An operator, is actualyl something you’re very accustomed to, such as:
Those are actually operators, and what does that mean? Well it means you can define one and when you’re
Type, comes across it it will run this function. We’ll get into it another time, cus its a great topic, but…
What that means right now, is that we can define a “<<" operator, so we can turn out data into a C-String with the relavent info.
So we can say:
friend std::ostream& operator<<( std::ostream& lhs, const Vec2& rhs )
lhs << "[" << rhs.x << "," << rhs.y << "]";
Which will make our console function return useful info.
console << Vec2f(10.0f, 11.1f) << std::endl;
One thing to note is that std::endl, what the heck is that?
It just means go into the STD namespace ( or package if you wanna use a different term )
and grab the "endl" constant... put that there.
Also - for POD ( Plain Old Data ) - we can call a toString function such as
template inline std::string toString (const T& t)
ss << t;
Which can be used as:
float pie = 3.1415
Console() << toString( pie ) << std::endl;
And that's how you get values out into the console in C++ / Cinder.