Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Указатель на С строку


Автор: niknor 27.5.2007, 00:12
никак не могу получить указатель на с-строку, дабы использовать её как массив символов
мне подсказали что надо использовать LPCSTR.. Но как я не понял smile 

Автор: zkv 27.5.2007, 00:39
Цитата(niknor @  27.5.2007,  00:12 Найти цитируемый пост)
никак не могу получить указатель на с-строку, дабы использовать её как массив символов
мне подсказали что надо использовать LPCSTR.. Но как я не понял

LPCSTR - это ключевое слово, конечно, близко к теме, но думаю совсем не то, что вы ищите smile
Непонятно, что вам нужно, ну вот маленький пример:
Код

//заводим указатель на символ
char *pArr;
//выделяем память под строку, ее адрес будет в pArr
pArr = new char[10];
//заводим другой указатель, нацеливаем его на первый символ строки по 
//адресу, хранящемуся в pArr 
char *pSym = pArr;
//нацеливаем его на второй символ строки по 
//адресу, хранящемуся в pArr
pSym = pArr+1;
//нацеливаем его на третий символ строки по 
//адресу, хранящемуся в pArr
pSym++;
//освобождаем память, выделенную под строку:
delete []pArr;;

Так что именно ты хотел спросить? smile 

Автор: Fazil6 27.5.2007, 08:15
Цитата(niknor @  27.5.2007,  00:12 Найти цитируемый пост)
никак не могу получить указатель на с-строку, дабы использовать её как массив символов

строка и есть массив символов
Код

void f(chsr* s)
{
   printf("%s", s);
}



   char str[] = "превед";// массив

  f(str); // тут используется как указатель

Автор: niknor 27.5.2007, 10:55
я имел в виду уже существующую переменную типа CString(наверное в памяти CString и хранится как массив char но как получить указатель на начало строки??), например    
Код

CString NachP;
char *b=LPCSTR(NachP);//неудавшаяся попытка))


Автор: Fazil6 27.5.2007, 11:04
у CString есть метод c_str() возвращающий  const char*

CString NachP;
NachP.c_str();

другое дело зачем тебе нужен этот указатель. Если ты хочешь через него изменять свой CString, то это запрещено и нужно работать подругому

Автор: DigitSphinx 27.5.2007, 12:27
В VS 2005 у CString нет метода 
Код

CString.c_str();

Зато есть метод 
Код

CString.GetBuffer();

Код

CString str = _T("Text");
wchar_t * ch = str.GetBuffer();

После этой команды ch будет указывать туда же куда собственная переменная m_pszData класса CString которая содержит адрес строки “Text”

Автор: niknor 27.5.2007, 12:53
просто пытался делать двойную быструю сортировку, в которой надо вытаскивать разряды, но я не знаю как это сделать через CSring, а через char всё проще..
Цитата

у CString есть метод c_str() возвращающий  const char*

CString NachP;
NachP.c_str();
другое дело зачем тебе нужен этот указатель. Если ты хочешь через него изменять свой CString, то это запрещено и нужно работать подругому

но перемещаться по символам строки можно??

Автор: vinter 27.5.2007, 12:59
должен быть перегружен обычный оператор индексации, так что юзай просто str[]

Автор: zkv 27.5.2007, 13:41
niknor, вот нет бы сразу нормально спросить, а то в угадайки играем smile
Код

CString str = "Hello!";
char c = str[2];

Это спрашивал?

Автор: niknor 27.5.2007, 17:15
)))
спасибо всем

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)