wcscat_s
От: Аноним  
Дата: 26.12.07 12:50
Оценка:
на входе есть wchar_t *sDST, *sSRC
их надо wcscat_s
как ?
Re: wcscat_s
От: Кодт Россия  
Дата: 26.12.07 15:55
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>на входе есть wchar_t *sDST, *sSRC

А>их надо wcscat_s
А>как ?

Если ты знаешь размер буфера sDST, то указываешь его.
А если не знаешь — то или протаскивай через все вызовы от того места, где он ещё известен.
Или, значит, надо не wcscat_s, а wcscat и молиться.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re: wcscat_s
От: NiJazz Австралия  
Дата: 26.12.07 16:27
Оценка:
Здравствуйте, Аноним, Вы писали:

А>на входе есть wchar_t *sDST, *sSRC

А>их надо wcscat_s
А>как ?

std::wstring dst( sDST );
std::wstring src( sSRC );

dst += src;

Re[2]: wcscat_s
От: Аноним  
Дата: 26.12.07 20:58
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Если ты знаешь размер буфера sDST, то указываешь его.

К>А если не знаешь — то или протаскивай через все вызовы от того места, где он ещё известен.
К>Или, значит, надо не wcscat_s, а wcscat и молиться.

wchar_t * aSTR = L"Lorem ipsum ";
wchar_t * bSTR = L"dolor sit amet"
Re: wcscat_s
От: Аноним  
Дата: 26.12.07 21:08
Оценка:
#define sizeinword 20
wchar_t buf[sizeinword]=L"";
wcscpy(buf,L"_Dst");
wcscat_s(buf,sizeof(buf)/sizeof(wchar_t),L"_SRC");
Re[3]: wcscat_s
От: Кодт Россия  
Дата: 27.12.07 09:33
Оценка:
Здравствуйте, <Аноним>, Вы писали:

К>>Если ты знаешь размер буфера 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>>
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.