Немного улучшенная версия решения R Samuel Klatchko.
wchar_t *data[] = { L"foo", ... };
size_t data_count = sizeof(data) / sizeof(*data);
wchar_t result[STUFF];
wcscpy(result, data[0]);
for (std::size_t n = 1; n < data_count; ++n)
{
wcscat(result, L", ");
wcscat(result, data[n]);
}
Улучшение в том, что нет, если в цикле есть зависимость от ветви. Я преобразовал в wcsXXXX функции стандартной библиотеки C, но я бы использовал std::wstring
, если он доступен.
EDIT:
Предполагая
Я знаю длину массива.
означает «Я знаю количество строк, к которым я хотел бы присоединиться», тогда вы не можете использовать то, что я опубликовал выше, что требует, чтобы вы знали конечную длину строки назначения во время компиляции.
Если вы не знаете, во время компиляции, используйте это, которое работает иначе (и содержит улучшение цикла, о котором я говорил):
wchar_t *data[] = { L"foo", ... };
size_t data_count = sizeof(data) / sizeof(*data);
std::wstring result(data[0]); //Assumes you're joining at least one string.
for (std::size_t n = 1; n < data_count; ++n)
result.append(L", ").append(data[n]);