03.01.2010, 15:54
Я канешна же нихера не понимаю в быстродействии, и вообще нуб, но всё же....
stock sparam (dest[], source[], index = 0)
{
new pos = 0, i = -1, nextpos = 0;
while (++i < index) pos = strfind(source, " ", true, pos), pos++;
nextpos = strfind(source, " ", true, pos);
if (nextpos == -1) nextpos = strlen(source);
strmid(dest, source, pos, nextpos, 100);
}
вот так мне нравится гораздо больше...
особенно потому, что более низкие уровни языков действуют гораздо быстрее...
т.е. если strfind написан на C++, то он будет в сто раз быстрее длиннющих циклов в pawn.
и небольшой модификат старой:
stock sparam (dest[], source[], index = 0) {
for (new cur, pre, i = -1;;cur++) {
if(source[cur] == ' ') {
if (++i == index) { strmid(dest, source, pre, cur, 50), break; }
pre = cur + 1;
}
if (source[cur] == 0) {
if (i == index) strmid(dest, source, pre, cur, 50);
break;
}
}
}
P.s. в С++ конечно предпочтение отдаю второму варианту.
stock sparam (dest[], source[], index = 0)
{
new pos = 0, i = -1, nextpos = 0;
while (++i < index) pos = strfind(source, " ", true, pos), pos++;
nextpos = strfind(source, " ", true, pos);
if (nextpos == -1) nextpos = strlen(source);
strmid(dest, source, pos, nextpos, 100);
}
вот так мне нравится гораздо больше...
особенно потому, что более низкие уровни языков действуют гораздо быстрее...
т.е. если strfind написан на C++, то он будет в сто раз быстрее длиннющих циклов в pawn.
и небольшой модификат старой:
stock sparam (dest[], source[], index = 0) {
for (new cur, pre, i = -1;;cur++) {
if(source[cur] == ' ') {
if (++i == index) { strmid(dest, source, pre, cur, 50), break; }
pre = cur + 1;
}
if (source[cur] == 0) {
if (i == index) strmid(dest, source, pre, cur, 50);
break;
}
}
}
P.s. в С++ конечно предпочтение отдаю второму варианту.