Здравствуйте, 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(), скорее всего, возвращает строку в Юникоде.