littlewing

人間とコンピューターとメディアの接点をデザインするために考えたこと

openframeworksでの文字列操作の覚書

openframeworksを使っていて、たまに文字列操作をすると忘れてしまうので覚書 まぁ、ただのc++なんですが・・

カレントディレクトリの取得

char dir[255];
getcwd(dir,255);
cout<<"Current Directory : "<<dir<<endl;

文字列結合は ofToStringして、+で連結

string cmd_convert;
cmd_convert = "osascript " + ofToString (dir) +  ofToString(CMD_FACECONVERT);

絶対パスからユーザ名を取得する

ofDir dir("");
ofSplitString(dir.getAbsolutePath(),"/").at(2)

画面への文字の描画はofDrawBitmapString

ofDrawBitmapString(ofToString(scene_id), x, y);

ただし、フォントサイズとかは指定できない

フォントとサイズを指定するなら、ofTrueTypeFont::drawString()

ofTrueTypeFont font;//ofApp.hに記載

void ofApp::setup(){
     ....
     font.loadFont("fonts/mono0755.ttf", 40);//40はフォントサイズ
}
void ofApp::draw(){
  font.drawString("time:" + ofToString(ofGetElapsedTimef()), font_x, font_y);
}

タイトルバーにFPSを表示

  • 60FPS以上などではこれが原因でFPS落ちることもあるので注意
ofSetWindowTitle(ofToString(ofGetFrameRate(), 0));

ofXMLをつかったXMLの操作

    string buffer = "<detect>\
<file>aaa.jpb</file>\
<target>bbb.jpg</target>\
</detect>";
    
    cout << buffer << endl;
    
    ofXml xml;
    xml.loadFromBuffer(buffer);
    cout << xml.getValue("target") << endl;