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


Автор: JAnty 31.3.2007, 19:49
Ничего что я так делаю?

Код

AnsiString as="257";
int i=6;

if(as==i) то круто.
 else голимо.


Сравнивает даже без варнинга, пол проги написал, а потом заметил, что забыл сконвертировать строку в число при помощи IntToStr(i);. Ничо или всётаки лучше исправить?

Автор: codelord 31.3.2007, 19:55
На сколько я вижу в AnsiString перегружен только оператора для этого же типа
Код

 bool __fastcall operator ==(const AnsiString& rhs) const;

поэтому поправь.

Добавлено через 5 минут и 48 секунд
хотя если работает.., странно как-то в упор не вижу что там выполняет такую операцию.....

Автор: Xenon 31.3.2007, 22:42
Неявно конструктор AnsiString(int), а потом bool operator == (const AnsiString& rhs). Нормально по идее должно быть все.

Автор: JAnty 1.4.2007, 08:58
Путём сложных вычислений и умо-заключений я решил всётаки переправить.

Автор: Xenon 1.4.2007, 12:36
Смотря чего тебе нужно в итоге - если сравнить числа, то тогда тебе нужно конвертировать строку в int, если тебе нужно сравнить последовательность символов, то ничего не надо.

Автор: JAnty 1.4.2007, 14:50
Сравниваю число с числом.

Автор: JackYF 2.4.2007, 16:59
Цитата(Xenon @  1.4.2007,  12:36 Найти цитируемый пост)
Смотря чего тебе нужно в итоге - если сравнить числа, то тогда тебе нужно конвертировать строку в int, если тебе нужно сравнить последовательность символов, то ничего не надо.


В случае с числами тоже ничего не надо. Число, как было сказано выше, неявно сконвертится в строку и будет выполнено сравнение двух строк. Так код, в принципе, правильный. Может быть, не супер-красивый... но вроде правильный.

Автор: Xenon 2.4.2007, 17:03
JackYF, я просто думал у AnsiString перегруженый operator == сравнивает по длинне smile

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