zoukankan      html  css  js  c++  java
  • 学习vc++的第六天--微软的字符串定义

    我把视频暂停到了 https://www.bilibili.com/video/av79302998?p=62

    然后去看了关于字节处理的方式,因为我发现提取一个字符串出来要每次写#ifdef UNICODE挺麻烦的

    于是乎我看了 https://www.bilibili.com/video/av38413272/?p=1 的所有字节处理

    ● 窄字节:
    char、char * 、const char *
    CHAR、(PCHAR、PSTR、LPSTR)、LPCSTR
    
    ● Unicode 宽字节:
    wchar_t、wchar_t * 、const wchar_t *
    WCHAR、(PWCHAR、PWSTR、LPWSTR)、LPCWSTR
    
    ● T 通用类型:
    TCHAR、(TCHAR * 、PTCHAR、PTSTR、LPTSTR)、LPCTSTR
    
    
    LPCTSTR类型:
    L表示long指针 这是为了兼容Windows 3.1等16位操作系统遗留下来的,在win32中以及其他的32位操作系统中, long指针和near指针及far修饰符都是为了兼容的作用。没有实际意义。
    P表示这是一个指针
    C表示是一个常量
    T表示在Win32环境中, 有一个_T宏
    STR表示这个变量是一个字符串
    记忆方法: L(长)P(指针)C(常量)T(通用)STR(字符串)

    原来我们只需要用通用类型处理字符串就好了..也就是其实是微软一层一层的套娃(函数封装和宏都是套娃)...

    所以复杂是复杂,了解了定义之后就感觉不复杂了...

    毕竟宏和字符串是CPP入门劝退大王...

    然后cpp的string类只是上面的窄宽字节的一层套娃,加了一点成员函数,

    string和CString的差别在于,string自带的成员函数少,所以CString又套了一层娃...

    但是为了完善开发者对于字符串的使用,很多程序,例如QT又有QString....

    为什么cpp标准它不提供完美一点的string类....

    凌乱.....

    // 要包含
    // #include "atlbase.h"
    // #include "atlstr.h"
    //老旧的 A2W,W2A,T2A,T2W
    //使用ATL提供新的 CA2W,CW2A,CT2W,CT2A 来更方便的转换:
    //cpp的人也太可爱了, 2的发音是To...但是又可以节约消耗

        CA2W a2wobj(p_a); //窄转宽字节
        p_www = (wchar_t*)a2wobj;
    
        CW2A w2aObj(p_www); //宽转窄字节
        p_aaa = (char*)w2aObj;
    
        CT2A ct2Obj(p_www);//通用转窄字节
        p_aaa = (char*)w2aObj;
    
        CString cs = _T("cabbagc");
        cs.Trim();
        cs.MakeUpper();
        cs.MakeLower();
        CString strRight = cs.Right(3);//末尾的字符
        CString strSub = cs.SpanIncluding(_T("abc"));//逐字匹配,有就返回,没有就中断
        CString strSub2 = cs.SpanExcluding(_T("vdrb"));//和上面相反,没有就返回,有就中断
    
        CString strT;
        strT.Format(_T("hello %s%d##"), _T("你好"), 123);
        strT.Replace('l', '#');
        strT.Replace(_T("##"), _T("aaa"));
    
        //默认支持 窄字节转宽字节Unicode,反向不提供方法
        const char* ppp = "你好132";
        CString strPPP = ppp;

    ⎛⎝⊙⏝⏝⊙。⎠⎞⎛⎝⓿⏝⏝⓿。⎠⎞

  • 相关阅读:
    Delphi通过调用COM对象实现更改桌面壁纸
    Delphi之TDrawGrid绘制
    Delphi中的消息截获(六种方法:Hook,SubClass,Override WndProc,Message Handler,RTTI,Form1.WindowProc:=@myfun)good
    从一般管理原则看微软的重组
    Delphi使用Windows API函数AnimateWindow实现窗体特效
    Delphi下URL汉字编码解码的两个函数
    Delphi2007下CIS的clHttp使用
    Delphi使用XmlHttp获取时间
    提升进程权限为DEBUG权限
    VS 2012 单元测试简单配置
  • 原文地址:https://www.cnblogs.com/JJBox/p/12535978.html
Copyright © 2011-2022 走看看