Почему-то текст \"Text\" не равен файлу, в котором написано \"Text\"
Моя программа читает из файла текст и сранивает его с переменной. Переменная char* Text="Text", в файле содержимое: Text Но при сравнении if(Text==File) условие не выполняется. Может это из-за того, что в файле еще содержится eof? Как сделать так, чтобы условие выполнялось?
ShowMessage(File);
Показывают то же самое.
Цитата:
On 2002-08-24 1251, Dmitri wrote
Моя программа читает из файла текст и сранивает его с переменной. Переменная char* Text="Text", в файле содержимое Text Но при сравнении if(Text==File) условие не выполняется. Может это из-за того, что в файле еще содержится eof? Как сделать так, чтобы условие выполнялось?
Может потому что указателей разный адрес?
Спассибо за науку я тоже думал над ответом на данный вопрос, но не мог врубиться...
Я проверил и действительно программа
char* Text="Text";
char* Best="Text";
if (Text==Best) ShowMessage (1);
if (*Text==*Best) ShowMessage (2);
выдает двойку...
Так что ты прав в первом случае идет сравнение указателей а они разные...
В верхнем примере у меня сравниваются только первые буквы...
Извинте лучше вот так...
char* Text="Text";
char* Best="Text";
if (Text==Best) ShowMessage (1);
if ((String)Text==(String)Best) ShowMessage (2);
Правда здесь используется String а я читал что это он не родной для C++ если есть приверженцы работы с родными типами С++ то приведите плиз свой пример...
ну это ты опять юзаешь VCL... а человеку может это не надо - из-за одного сравнения весь класс тащить... когда сравниваешь напрямую - сравниваются адреса, но есть специальные функции типа strcmp(), которые входят в стандартные библиотеки С