CString *p = &status;
char *p2 = &buff[1];
while(*p2 != ']')
*(p++) = *(p2++);
Копирование строки указателями
Мне надо скопировать в строку CString status то, что между квадратными скобками, то есть "asdf". Делаю это так:
Код:
вылетает с ошибкой. Помогите разобраться с работой с указателями. Спасибо
Тут у тебя идёт перемещение не по массиву char, а по СString...
Т.е примерно так:
Код:
СString status[10];
CString* p = &status[0];
for(int i = 0; i < 10; i++)
*(p++) = "Hello World";
CString* p = &status[0];
for(int i = 0; i < 10; i++)
*(p++) = "Hello World";
Цитата: REFOT
*(p++) - обрати внимание на это место )
Тут у тебя идёт перемещение не по массиву char, а по СString...
Т.е примерно так:
Тут у тебя идёт перемещение не по массиву char, а по СString...
Т.е примерно так:
Код:
СString status[10];
CString* p = &status[0];
for(int i = 0; i < 10; i++)
*(p++) = "Hello World";
CString* p = &status[0];
for(int i = 0; i < 10; i++)
*(p++) = "Hello World";
не совсем то что мне нужно было. Из предыдущего кода: status это value-переменная static'a класс CString. Мне надо было из char buff[] = "[asdf]"; занести в CString текст между [ и ] т.е. из "[asdf]" сделать "asdf". Предыдуший код не помог, но сработало это
Код:
char* p2 = &buff[1];
char buff2[200];
memset(buff2, 0, 200);
int i = 0;
while(*p2 != ']') {
buff2 = *p2;
*p2++;
i++;
}
status = buff2;
char buff2[200];
memset(buff2, 0, 200);
int i = 0;
while(*p2 != ']') {
buff2 = *p2;
*p2++;
i++;
}
status = buff2;
Почему не получалось сразу из указателя в указатель перемещать как я хотел в первом коде?
Наверное, потому, что инкрементирование указателя на CString суть переход к следующему CString (а он один).
а не легче скопировать весь буфер (вместе со скобками) в CString, а потом методами CString поудалять оттуда эти скобки?