超难的字符串比较有关问题

超难的字符串比较问题
小弟定义了一个char*   和TCHAR数组两个变量
现在想判断char*里面的内容是否在TCHAR数组中
通过strstr/strcmp比较的话类型又不匹配。郁闷ing~

------解决方案--------------------
VC里面定义 typedef char TCHAR, *PTCHAR;

strstr() 是可以用的,再仔细一点看看

------解决方案--------------------
如果你定义了_MBCS,那么typedef char TCHAR,你可以用strstr/strcmp比较分析.
如果你定义了_UNICODE,则typedef wchar_t TCHAR,你就不能直接用函数比较,用mbstowcs(...) 或是MultibyteToWideChar(...),将char* 转成wchar_t*,再用wcscmp/wcsstr比较

感觉你这样做不太好,如果想支持多语言,都定义成TCHAR比较好.

------解决方案--------------------
char * P1 = "123 ";
TCHAR t_CHAR[20] = "1111234444 ";
CString s;
//s.Format( "%t ",P1);
s = (LPCTSTR)(LPSTR)t_CHAR;
if(s.Find(P1,1)> 0)
AfxMessageBox( "Find! ");
------解决方案--------------------
#include <string.h>

_TCHAR szFileName[1024];
char* temp = "A ";

if(strstr(szFileName,temp)> 0)
{
//find it
}

------解决方案--------------------
添加这个语句就可以了
#include <tchar.h>

不推荐混用char 和 TCHAR,因为TCHAR是被设计用于通用字符类型的,根据是否定义了UNICODE宏,它可以表示Unicode字符或者MBCS字符。比较的时候,使用lstrcmp等函数对TCHAR字符串进行操作。
------解决方案--------------------
楼主是不是定义了
#define UNICODE
才比较麻烦的?楼上各位都没理解楼主意思啊.

这样的比较如果是ascii的字符,那比较容易,就是
asc编码每个字符后面加多一个0,但是如果包含文字,就无法这样判断了.所以,这个方法是不通用的,都转成CString是不可以的.虽然都是 "测试 ",但比较结果肯定不同.如何实现我也不知道.关注楼主帖子,如果找到方法记得来这里公布以下啊.
------解决方案--------------------
to yaozijian110
如果我定义TCHAR temp = "A "; 怎么这句会报错?

本来就不能这样写啊,
TCHAR temp = TEXT( 'A ');
------解决方案--------------------
#include <string.h>
#include <tchar.h>

void main(){
_TCHAR szFileName[1024];
char* temp = "A ";
TCHAR * temp1 = "A ";

if(strstr(szFileName,temp)> 0)
{
//find it
}
}
------解决方案--------------------
TCHAR数组与char*不匹配说明你定义了UNICODE
你一定要用strstr的话呢,可以下面这样做

TCHAR * a;
char * b;

strstr(WTA(b),a);
------解决方案--------------------
W2A 前要加 USES_CONVERSION,还得 include <atlconv.h>