Hallo,
leider funktioniert es immer noch nicht so wie es soll.
Ich poste mal die Methode wie sie jetzt als sehr unschoener quickhack einigermassen funktioniert:
<snip> /* write measured samples to files. */ void AODV_Neighbor::dumpSamples(nsaddr_t thisNodeID) {
string filename="out/samples-"; //i need a fucking ToString() like in Java ..
//das funktioniert nicht, verdammt //filename +=thisNodeID.addr_; //das auch nicht //filename +="-" + string(nb_addr) + ".txt"; //so funktioniert es .. if (thisNodeID==0){filename+="0-";} else if (thisNodeID==1){filename+="1-";} else if (thisNodeID==2){filename+="2-";} else if (thisNodeID==3){filename+="3-";} else if (thisNodeID==4){filename+="4-";} else if (thisNodeID==5){filename+="5-";} else if (thisNodeID==6){filename+="6-";} else {filename+="rest-";}
if (nb_addr==0){filename+="0";} else if (nb_addr==1){filename+="1";} else if (nb_addr==2){filename+="2";} else if (nb_addr==3){filename+="3";} else if (nb_addr==4){filename+="4";} else if (nb_addr==5){filename+="5";} else if (nb_addr==6){filename+="6";} else {filename+="rest";}
filename+=".txt";
fprintf(stderr, "%e dumpSamples() on node %d for neighbor %d\n",CURRENT_TIME, thisNodeID, nb_addr ); ofstream out(filename.c_str()); //out << "hallo"<< endl; out << "#Node: " << thisNodeID << "Neighbor: " << nb_addr <<endl; for (int i=99;i>=0;i--){ out << samples[i].time << " " << samples[i].signal << endl; } } </snip>
thisNodeID und nb_addr sind vom Typ struct nsaddr_t
In der eingebundenen config.h steht folgendes zu nsaddr_t:
<snip> typedef int32_t nsaddr_t;
// 32-bit addressing support struct ns_addr_t { int32_t addr_; int32_t port_; #ifdef __cplusplus ns_addr_t& operator= (const ns_addr_t& n) { addr_ = n.addr_; port_ = n.port_; return (*this); } int operator== (const ns_addr_t& n) { return ((addr_ == n.addr_) && (port_ == n.port_)); } #endif // __cplusplus }; </snip>
Ich finde einfach keine Moeglichkeit, die Variablen in den string zu schieben.. (wie in Java mit toString())
Peter