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


Автор: AlexNor 11.8.2004, 09:21
Почему я не могу сделать следующее?:
CString tmp = _T("ABC");
tmp[1] = '3';

компилятор ругается
error C2106: '=' : left operand must be l-value

получается я что по индексу не могу присвоить символ??
а как же тогда это сделать?

Автор: chipset 11.8.2004, 09:27
CString вероятно не перегружает оператор [].
Юзай SetAt
Код

CString tmp = _T("ABC");
tmp.SetAt(1,'3');

Добавлено @ 09:29
Или пользуй std::string из STL, у него вроде перегружен этот оператор...
Добавлено @ 09:29
Во всяком случае
Код

std::string tmp = _T("ABC");
tmp[1] = '3';
комилицца..

Автор: achmed 11.8.2004, 09:47
CString поддерживает оператор [], дело в другом, в том что он возвращает,
а возвращает он rvalue, т.е. символ, а в std::string operator[] возвращает lvalue,
т.е. ссылку на символ.

Автор: mr.DUDA 11.8.2004, 18:30
achmed правду говорит !
А чтобы обратиться к символу строки по индексу - надо сперва получить указатель на буфер (CString::GetBuffer), потом поработать с ним (как с обычным массивом символов) - и "вернуть" в строку (CString::ReleaseBuffer).

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