Je pravda, ze pokud na retezce pouzijete nejakou inteligentni tridu, je to neprustrelne, ale na druhe strane mnohem pomalejsi. Prece jenom - alokace libovolneho mista na zasobniku trva (mluvim ted opravdu pouze o alokaci) asi tak jednu strojovou instrukci: odecteni cisla od ukazatele zasobniku.
Vsechny inteligentni retezce pritom z principu museji pouzivat pametovou hromadu, coz v horsim pripade obnasi volani jadra - a uz jenom dispatch do jadra a zpet je alespon 100x vice strojovych instrukci.
Jeden muj kolega - pokud napr. sestavuje SQL dotazy, stale pouziva:
char sql_dotaz[200];
snprintf(sql_dotaz, sizeof(sql_dotaz), "SELECT %s FROM ...", szSelectovane_sloupce,...);
Vyhody: je to ta nejprenositelnejsi, nejsnaze citelna a (pokud nahradite snprintf nekolika strcpy() a strcat()) take vubec nejrychlejsi konstrukce, kterou muzete v programu pouzit - pokud ovsem mate nejak omezene delky retezcu, se kterymi pracujete.
Takze bych rekl, ze to neni jen o lenosti. Pokud se snazite psat multiplatformni kod, ktery bude rychly, jednoduchy a citelny, pak je to velmi elegantni reseni!
Samozrejme pracujete-li s retezci ve kterych muze byt 9-9999999 znaku, pak se dynamicke alokaci nevyhnete:-).