Здравствуйте, 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> чем-то не нравится или я что-то пропустил?
При чем здесь вектор (массив) строк — не понимаю. Речь шла о конкатенации нескольких строк в одну.