Uživatelské nástroje

Nástroje pro tento web


cpp_tips

Toto je starší verze dokumentu!


Tipy & triky C++

char* do istringstrem

  • jak z velkého pole znaků udělat istringstream bez kopírování v paměti?
  • následující kód paměť kopíruje až 3x (záleží na implementaci copy on write)
char *mybuf[] = "very very .. long";
istringstream myss(string(mybuf, strlen(mybuf)));  
  • finta
char *mybuf[] = "very very .. long";
istringstream dfile;
dfile.rdbuf()->pubsetbuf(mybuf, strlen(mybuf));
  • ověřil jsem to zavoláním free na mybuff (kód se musí upravit na dynamickou alokaci mybuf)

Default parametry metody/funkce

  • mám metodu s více parametry. Někdy mi ale stačí změnit jen ten první a ostatní jako default
  • jako default lze dokonce použít i funkci nebo proměnou
// declaration
void setSomething(int val1 = 1, int val2 = 2, int val3 = 3);
 
// definition
void setSomething(int val1, int val2, int val) {
  this.val1 = val1;
  this.val2 = val2;
  this.val3 = val3;  
}
 
// calling
setSomething(1);
setSomething(1,2);
setSomething(1,2,3);
cpp_tips.1450093961.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki