vc字符串转换处理:(绝对精华,收集所有的例子)

摘要:
有效字符数的大小可以是从0到缓冲区的最大长度减去1的任何数字。字符计数和缓冲区长度被巧妙隐藏。将char*转换为CString如果将char*转化为CString,除了直接赋值外,还可以使用CString::Format。如果您只想修改字符或截断字符串,例如:CStrings;LPTSTRp=s.GetBuffer();LPTSTRdot=字符串;//如果(p!
  vc字符串转换处理:(绝对精华,收集所有的例子)
1.头文件中要定义宏;  

      #define   UNICODE   
      #define   _UNICODE   
  ////////////////////

char   buf[128];  
  memset(buf,0,128);   
  strcpy(buf,"你好");   
  WCHAR   pCName[128];   
  memset(pCName,0,128);   
  MultiByteToWideChar(CP_THREAD_ACP,MB_USEGLYPHCHARS,buf,strlen(buf),pCName,128);   
   至于WCHAR   转换到CHAR,则用   
  WideCharToMultiByte

//////////////////////////


  2.char转换成wchar   
      const   char   *pFilePathName   =   "c:\aa.dll";   
      int   nLen   =   strlen(pFilePathName)   +   1;   
      int   nwLen   =   MultiByteToWideChar(CP_ACP,   0,   pFilePathName,   
nLen,   NULL,   0);   
    
      TCHAR   lpszFile[256];   
      MultiByteToWideChar(CP_ACP,   0,   pFilePathName,   nLen,   lpszFile,   
nwLen);   
    
  3.wchar转换成char  
        char   *pFilePathName;   
        TCHAR   lpszFile[256];   
      _tcscpy(lpszFile,   _T("c:\aa.dll"));   
    
      int   nLen   =   wcslen(wstr)+1;     
      WideCharToMultiByte(CP_ACP,   0,   lpszFile,   nLen,   pFilePathName,   
2*nLen,   NULL,   NULL);
  

char*和CString转换 
CString 是一种很特殊的 C++ 对象,它里面包含了三个值:一个指向某个数据缓冲区的指针、一个是该缓冲中有效的字符记数(它是不可存取的,是位于
CString 地址之下的一个隐藏区域)以及一个缓冲区长度。 
有效字符数的大小可以是从0到该缓冲最大长度值减1之间的任何数(因为字符串结尾有一个NULL字符)。字符记数和缓冲区长度被巧妙隐藏。

(1) char*转换成CString
  若将char*转换成CString,除了直接赋值外,还可使用CString::Format进行。例如:
         char chArray[] = "Char  test";
         TCHAR * p = _T("Char  test");( 或LPTSTR p = _T("Char  test");)
         CString theString = chArray;
         theString.Format(_T("%s"), chArray);
         theString = p;

(2) CString转换成char*

  若将CString类转换成char*(LPSTR)类型,常常使用下列三种方法:

  方法一,使用强制转换。例如:

       CString theString( (_T("Char test "));
        LPTSTR lpsz =(LPTSTR)(LPCTSTR)theString;

  方法二,使用strcpy。例如:

       CString theString( (_T("Char test "));
       LPTSTR lpsz = new TCHAR[theString.GetLength()+1];
        _tcscpy(lpsz, theString);

  需要说明的是,strcpy(或可移值的_tcscpy)的第二个参数是 const wchar_t* (Unicode)或const char* 
(ANSI),系统编译器将会自动对其进行转换。

  方法三,使用CString::GetBuffer。
        如果你需要修改 CString 中的内容,它有一个特殊的方法可以使用,那就是 GetBuffer,它的作用是返回一个可写的缓冲指针。 
如果你只是打算修改字符或者截短字符串,例如:
       CString s(_T("Char test "));
        LPTSTR p = s.GetBuffer(); 
        LPTSTR dot = strchr(p, ''.''); 
         // 在这里添加使用p的代码
          if(p != NULL) 
         *p = _T('

免责声明:内容来源于网络,仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Javascript鼠标和滚轮事件05-移动和PC配置多页面打包引入element和vant冲突下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

oracle中to_date详细用法示例(oracle日期格式转换)

1. 日期和字符转换函数用法(to_date,to_char) select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual; //日期转化为字符串select to_char(sysdate,'yyyy') as nowYear from dual; //获取时间的年selec...

pgloader 学习(六) 加载csv 数据

关于加载的配置参数都是使用comand file command file 参考格式 LOAD CSV FROM 'GeoLiteCity-Blocks.csv' WITH ENCODING iso-646-us HAVING FIELDS ( startIpNum, endIpNum, loc...

IDA,很好很强大

IDA,这款可以把程序反编译成C语言的东西。。 我用我们老师C++课上留的一道小学奥赛水平的弱智题的程序代码为例,先用MinGW编译,结果用IDA反编译出了几千个函数,全都是sub_加编号的名称,每一个都很短,变量名都是v1、v2等等的,一点也看不懂,我甚至连主函数在哪里都找不到。 然后又用VS2010编译,再反编译,令我大开眼界,函数名、变量名全能被...

libpcap编程实例

1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <pcap.h> 4 #include <errno.h> 5 #include <sys/socket.h> 6 #include <netinet/in...

Unity3D 解决c#脚本乱码

    怀着无比激动的心情下载了Unity3D,按照网上的教程试着制作我的第一个U3D“作品”:camera绑定绘制GUI显示“Hello, World”,很简单的例子,因此很快就弄完顺利运行,可是我想试试中文字符的,原以为不会出问题,可是真的出问题了:在u3d运行时显示乱码。自己顺藤摸瓜,通过修改u3d的c#代码模板顺利解决问题: ① 定位到:Unit...

如何在Markdown文档中插入空格?

简单说  在 Markdown 文档中,可以直接采用 HTML 标记插入空格(blank space),而且无需任何其他前缀或分隔符。具体如下所示: 插入一个空格 (non-breaking space)     &nbsp;    或    &#160;     或      &#xA0; 插入两个空格 (en space)   ...