Re: Использование memcpy
От: Хреннос  
Дата: 16.12.13 14:37
Оценка: :)
Здравствуйте, 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(), скорее всего, возвращает строку в Юникоде.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.