Is there a better way of converting an int into a char than this…?
int myNum = 9;
string myNumString = ofToString( myNum );
const char * myNumChars = myNumString.c_str();
char myChar = myNumChars[0];
Thanks
Is there a better way of converting an int into a char than this…?
int myNum = 9;
string myNumString = ofToString( myNum );
const char * myNumChars = myNumString.c_str();
char myChar = myNumChars[0];
Thanks
Well, I was gonna suggest using a stringstream… but that’s what ofToString does anyway.
Could check out the itoa function, but it’s not standard ANSI-C (ie. it’s compiler-dependent). But also on that page, are a couple notes about using sprintf to do the conversion.
I would say that sprintf is the next best method to the code you’ve already got. The disadvantage (or advantage) is that it writes directly to a char* buffer … which means you need to have that buffer allocated before your call, and it must have enough room for the entire string (probably not a huge deal for integers, because they can only contain so many digits).
In short, the method you are using is likely the best approach… I just thought I’d discuss other options so you know about them
Hey Chris, what is it exactly you want to do? If it is convert a single digit integer number to char you can do this:
int myNum = 9;
char myChar = '0' + myNum;
I am trying to dynamically name some filenames in a for loop, but am getting this error:
‘expression must have integral or unscoped enum type’
for (int i = 0; i < 5; i++){
//other stuff is in here too, but this is the line producing the error
tempModel.loadModel('models/" + i + ".dae", false)
}
you can’t concatenate a string with an int but you can convert the integer (i) into a string using ofToString(…) so this would work (note the double quotes not single quote):
"models/" + ofToString(i) + ".dae", false
ofToString did it!
Ok, I am permanently switching from Processing to OF:)
Thank you all for your help, this is a lifesaver
Just in case if anyone else is looking for answer, here is the code:
ofSaveImage(pix, ofToString(counter)+".png", OF_IMAGE_QUALITY_BEST);
counter++; //should be declared as zero in .h file
sorry - I am back!
Is there any way to connect a shader to ofPixels? The images are now saved with transparent backgrounds. I want to save the shader effects (not the originally inputter image) . is it possible?
Right now the dna.png image saves many times, instead of the effects:
void ofApp::setup(){
shader.load( “shaderVert.c”, “shaderFrag.c” );
counter = 0;
image.loadImage( “dna.png” );
fbo.allocate(image.getWidth(), image.getHeight(), GL_RGBA);
}
void ofApp::draw(){
//1. Drawing into fbo buffer
fbo.begin(); //Start drawing into buffer
ofClear(255, 255, 255, 0);
image.draw( 0,0);
fbo.end(); //End drawing into buffer
//2. Drawing to screen through the shader
shader.begin(); //Enable the shader
float time = ofGetElapsedTimef();
shader.setUniform1f( "time", time ); //Passing float parameter "time" to shader
//Draw fbo image
fbo.draw( 0, 0 );
ofPixels pix;
fbo.readToPixels(pix);
ofSaveImage(pix, ofToString(counter) + ".png", OF_IMAGE_QUALITY_BEST);
counter++;
shader.end(); //Disable the shader
}
First of all I feel a little bit confused because it’s a reply for another post …so maybe move it to right place…but my answer is…you need something like this:
fbo.begin()
clear fbo
shader.begin()
shader.setUniform…
image.draw()
shader.end()
fbo.end()
now you can draw fbo
fbo.draw
and save it to png file…
thank you so much. this worked. OMG this is a totally different post - this is what coding does to me :(((