char * 转LPCTSTR若干方法

来源:互联网 发布:大数据分析系统源代码 编辑:程序博客网 时间:2024/05/18 02:36

如何将char* 转换为LPCTSTR??
rainForestBache (百奇)     2004-10-19 20:17:48 在 VC/MFC / 基础类 提问
请多多指教

问题点数:20、回复次数:10

1楼  stephen_young   ()   回复于 2004-10-19 20:33:45  得分 5 
实际上将char*转换成CString对象就成了.   
  char*   p   =   "aaaa";   
  CString   s   =   p;//或   
  CString   m(p);   
    
  LPCTSTR   lp   =   (LPCTSTR)s;//   LPCTSTR   lp   =   (LPCTSTR)m;   
    
  这两句都行。

Top
2楼  rainForestBache   (百奇)   回复于 2004-10-19 20:34:34  得分 0 
除了用CString   还有什么办法么?   
 

Top
3楼  fanqing   (火影忍者+28%(准备学习进程/线程))   回复于 2004-10-19 20:34:46  得分 5 
CString   dd="fanqing";   
  dd.getbuffet(10);

Top
4楼  BestBear   (天外飞熊)   回复于 2004-10-19 20:37:28  得分 5 
1>   char*转换成CString   
    
    若将char*转换成CString,除了直接赋值外,还可使用CString::Format进行。例如:   
    
  char   chArray[]   =   "This   is   a   test";   
  char   *   p   =   "This   is   a   test";     
    
    或   
    
  LPSTR   p   =   "This   is   a   test";     
    
    或在已定义Unicode应的用程序中   
    
  TCHAR   *   p   =   _T("This   is   a   test");     
    
    或   
    
  LPTSTR   p   =   _T("This   is   a   test");   
  CString   theString   =   chArray;   
  theString.Format(_T("%s"),   chArray);   
  theString   =   p;     
    
  2>CString     to   LPCTSTR     
  LPCTSTR   lpText;   
  CString   str;   
  str.Format("%d",a);   
  lpText   =   (LPCTSTR)str;   
 

Top
5楼  rainForestBache   (百奇)   回复于 2004-10-19 20:41:38  得分 0 
非常感谢以上各位stephen_young()   ,   fanqing(宇繁),BestBear(天外飞熊)   
  但是小弟不想使用CString类库,还有其他的办法么?   
 

Top
6楼  rainForestBache   (百奇)   回复于 2004-10-19 20:49:41  得分 0 
我想开发一个WINCE的网络程序,使用API和socket2函数,   
  char   hostname[100];   
  int   len;   
  len   =   100;   
  memset(&hostname[0],'\0',100);   
  if(gethostname(&hostname[0],len)==0){   
  SetWindowText(GetDlgItem(g_hwndMyDialog,IDC_EDIT1),&(hostname[0]));   
  }   
  else{   
  SetWindowText(GetDlgItem(g_hwndMyDialog,IDC_EDIT1),_T("error"));   
  break;   
  }   
    
  以上程序由于gethostname必须使用char*   ,而SetWindowsText又是使用LPCTSTR,因此必须转换。   
    
 

Top
7楼  huwei001982   (编程浪子)   回复于 2004-10-19 20:54:52  得分 5 
啊   
    
  char   *p   =   "dfkdslf"   
  LPCTSTR   d   =   (LPCTSTR)p;   
    
  不行吗

Top
8楼  huwei001982   (编程浪子)   回复于 2004-10-19 20:55:55  得分 0 
更正楼上,     char   *p   =   "dfkdslf";   //掉了一个分号     ;

Top
9楼  rainForestBache   (百奇)   回复于 2004-10-19 21:09:32  得分 0 
huwei001982(编程浪子)     
  char   *p   =   "dfkdslf"   
  LPCTSTR   d   =   (LPCTSTR)p;   
  这样子不行,LPCTSTR实际上为unsigned   short   *,以2byte为单位,而char   *以1个byte   为单位。

Top
10楼  rainForestBache   (百奇)   回复于 2004-10-19 21:36:08  得分 0 
谢谢以上各位,问题解决了,最后只能用最笨的办法。   
  BOOL   LPCSTR2LPTSTR(LPCSTR   str,LPTSTR   wstr)   
  {   
  int   l,i;   
  l=strlen(str);   
  for   (i=0;i<=l;i++)wstr[i]=str[i];   
  return   TRUE;   
  };   
    
  如果各位有更好的办法,请发消息给我。   
  再次谢谢各位。 

原创粉丝点击