Russian Qt Forum

Программирование => С/C++ => Тема начата: MHard от Февраль 17, 2009, 22:20



Название: Проблема с LPCTSTR
Отправлено: MHard от Февраль 17, 2009, 22:20
Здравствуйте. кто знает помогите плс.

Код
C
void funk1(LPCTSTR par1)
{
   if (par1=="slovo")
   {
      // этот условник не срабатывает ... почему ? как правильно реализовать?
 
   }
}
 
void main ()
{
  funk1("slovo");
}

помогите пожалуйста компиляция проходит нормально а сравнения типа LPCTSTR со стокой дает отрицательный результат


Название: Re: Проблема с LPCTSTR
Отправлено: BRE от Февраль 17, 2009, 22:26
Так ты сравниваешь указатели. Для сравнения строк есть целое семейство функций: strcmp, strncmp, trcasecmp, strncasecmp.
Код:
const char *str1 = "String 1";
const char *str2 = "String 2";
int res = strcmp( str1, str2 );
res == 0 - если строки равны;
res < 0 - строка str1 меньше str2;
res > 0 - строка str1 больше str2.


Название: Re: Проблема с LPCTSTR
Отправлено: BRE от Февраль 17, 2009, 22:30
Твой случай:
Код
C++ (Qt)
void funk1(LPCTSTR par1)
{
   if ( !strcmp( par1, "slovo" ) )
   {
      // этот условник не срабатывает ... почему ? как правильно реализовать?
 
   }
}
 


Название: Re: Проблема с LPCTSTR
Отправлено: Hellraiser от Февраль 17, 2009, 22:30
LPCTSTR используется для строк Unicode. Поэтому надо писать
Код
C++ (Qt)
if (wcscmp(par1, L"slovo"))
{
}
 


Название: Re: Проблема с LPCTSTR
Отправлено: MHard от Февраль 17, 2009, 22:32
Код
C++ (Qt)
void funk1(LPCTSTR par1)
{
   const char* t="slovo";
    if (strcmp(par1,t)==0)
   {
      // ЗАработало...
 
   }
}
 
void main ()
{
  funk1("slovo");
}
 

Заработало огромное спасибо


Название: Re: Проблема с LPCTSTR
Отправлено: BRE от Февраль 17, 2009, 22:36
LPCTSTR используется для строк Unicode. Поэтому надо писать
Может быть и так. Подобные декларации пытаюсь забыть как страшный сон, уже лет 8 как.