Re[2]: Использование memcpy
От: IgorKr Украина  
Дата: 16.12.13 15:24
Оценка:
Здравствуйте, Хреннос, Вы писали:

Х>Здравствуйте, IgorKr, Вы писали:


IK>>Код:

IK>>
IK>>record *r=new record();
IK>>int k=1;
IK>>while(k<StringGrid1->RowCount)
IK>>{
IK>>    memcpy(r->n,StringGrid1->Cells[0][k].w_str(),sizeof(r->n));
IK>>    memcpy(r->name,StringGrid1->Cells[1][k].w_str(),sizeof(r->name));
IK>>    memcpy(r->s1,StringGrid1->Cells[2][k].w_str(),sizeof(r->s1));
IK>>    memcpy(r->s2,StringGrid1->Cells[3][k].w_str(),sizeof(r->s2));
IK>>        k++;
IK>>        ...code...
IK>>}
IK>>


Х>Здесь прекрасна каждая строка.


IK>>Текст в r получается с нулями '\0' после каждого символа. Как скопировать без нулей ?


Х>Для начала следует понять, что именно вы копируете, куда именно вы копируете, каков размер копируемых данных, и вообще — нужно ли вам именно копировать, а не преобразовывать из одного формата в другой.


Х>Для начала:

Х>1. Строковые объекты в С++ лучше всего копировать не через memcpy, а через присваивание.
Х>2. sizeof(r->n) дает размер поля во время компиляции.
Х>3. w_str(), скорее всего, возвращает строку в Юникоде.


Как лучше присваивать UnicodeString в char ?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.