Здравствуйте, <Аноним>, Вы писали:
А>на входе есть wchar_t *sDST, *sSRC
А>их надо wcscat_s
А>как ?
Если ты знаешь размер буфера sDST, то указываешь его.
А если не знаешь — то или протаскивай через все вызовы от того места, где он ещё известен.
Или, значит, надо не wcscat_s, а wcscat и молиться.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Здравствуйте, Аноним, Вы писали:
А>на входе есть wchar_t *sDST, *sSRC
А>их надо wcscat_s
А>как ?
std::wstring dst( sDST );
std::wstring src( sSRC );
dst += src;
Здравствуйте, <Аноним>, Вы писали:
К>>Если ты знаешь размер буфера sDST, то указываешь его.
К>>А если не знаешь — то или протаскивай через все вызовы от того места, где он ещё известен.
К>>Или, значит, надо не wcscat_s, а wcscat и молиться.
А>wchar_t * aSTR = L"Lorem ipsum ";
А>wchar_t * bSTR = L"dolor sit amet"
Тут тебе даже молитва не поможет. Конкатенация строковых
литералов в Си — это расстрел памяти.
Читай книжки про работу со строками.
Для затравки:
// чтоб не повторяться с расписыванием литералов
#define A L"Lorem ipsum "
#define B L"dolor sit amet"
// конкатенация на стадии компиляции
wchar_t const* fish = A B; // лексемы "строковый литерал", идущие подряд - суть один строковый литерал
// обрати внимание, что все лексемы должны иметь один тип - т.е. быть "" или L"", но не вперемешку
// конкатенация в стиле Си
size_t const count = wcslen(A)+wcslen(B)+1;
wchar_t* buffer = (wchar_t*) calloc(count, sizeof(wchar_t));
// или (wchar_t*) malloc(count*sizeof(wchar_t))
wcscpy_s(buffer, count, A);
wcscat_s(buffer, count, B);
// конкатенация в С++
std::wstring s = A;
s += B;
// или - экстремально
std::wostringstream wss;
wss << A << B;
std::wstring s = wss.str();
Но это не руководства к действию!!! Сперва книжки. Иначе наворотишь.
... << RSDN@Home 1.2.0 alpha rev. 655>>