Re[6]: Об эффективности программ
От: Pavel Dvorkin Россия  
Дата: 07.10.05 12:34
Оценка:
Здравствуйте, RobinBobin, Вы писали:

RB>Здравствуйте, Pavel Dvorkin, Вы писали:



PD>> char szTotal[1000];

PD>> char * szStrings[3] ={"abc", "def", "ghi"};
PD>> int nStrings = 3;
PD>> char* pCurrent = szTotal;
PD>> for(int i = 0; i < nStrings; i++)
PD>> pCurrent += sprintf(pCurrent,"%s",szStrings[i]);


RB>М-м-м-м... Ну а если строк много, и их длина неизвестна?


Да хоть сотня, что от этого изменится ? И при чем здесь длина, где я ее использую ?
Ты идею прост не понял. sprintf возвращает длину выведенного куска символов (т.е очередной строки). Следующиий вывод идет с новой позиции, начиная за предыдущей строкой, после ее последнего символа. Ни один символ не просматривается и не копируется дважды. Строго однопроходной алгоритм.

>Вам

RB>
RB>std::vector <std::string> >
RB>

RB> чем-то не нравится или я что-то пропустил?

При чем здесь вектор (массив) строк — не понимаю. Речь шла о конкатенации нескольких строк в одну.
With best regards
Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.