精华内容
下载资源
问答
  • LPCWSTR

    千次阅读 2014-08-12 09:50:19
    LPCWST是一个指向unicode编码字符串的32位指针,所指向字符串是wchar型,而不是char型。...'to ' LPCWSTR),可以考察看声明,如果有ANSI方式的只要在函数后面加个A就行,或者在定义参数时把char *改为WCHAR*。

    LPCWST是一个指向unicode编码字符串的32位指针,所指向字符串是wchar型,而不是char型。

    因为在VS2005以后,编码方式默认为Unicode,部分函数在使用时默认调用Unicode方式,而非ANSI方式。

    如果遇到LPCWSTR参数错误(cannot convert parameter *from 'const char [**]'to ' LPCWSTR),可以考察看声明,如果有ANSI方式的只要在函数后面加个A就行,或者在定义参数时把char *改为WCHAR*。

    展开全文
  • QString 与 LPCWSTR 互转

    2020-08-19 18:24:11
    一、 QString 转 LPCWSTR QString myStr("hello world"); std::wstring wlpstr = myStr.toStdWString(); LPCWSTR lpcwStr = wlpstr.c_str(); 二、 LPCWSTR 转 QString QString myStr = QString::...

     一、 QString 转 LPCWSTR

        QString myStr("hello world");
        std::wstring wlpstr = myStr.toStdWString();
        LPCWSTR lpcwStr = wlpstr.c_str();

     二、  LPCWSTR 转 QString 

    QString myStr = QString::fromStdWString(lpcwStr);

     

    展开全文
  • string转LPCWSTR

    2017-12-07 21:00:01
    LPCWSTR stringToLPCWSTR(std::string orig) { size_t origsize = orig.length() + 1; const size_t newsize = 100; size_t convertedChars = 0; wchar_t *wcstring = (wchar_t *)malloc(sizeof(wcha
    LPCWSTR stringToLPCWSTR(std::string orig)
    {
        size_t origsize = orig.length() + 1;
        const size_t newsize = 100;
        size_t convertedChars = 0;
        wchar_t *wcstring = (wchar_t *)malloc(sizeof(wchar_t)*(orig.length() - 1));
        mbstowcs_s(&convertedChars, wcstring, origsize, orig.c_str(), _TRUNCATE);
        return wcstring;
        return LPCWSTR();
    }
    展开全文
  • 最近在学习C++,遇到了一个char*转换为LPCWSTR的问题,通过查找资料终于解决了,所以下面这篇文章主要介绍了C++中char*转LPCWSTR的解决方案,文中通过详细的示例代码介绍的很详细,有需要的朋友可以参考借鉴,下面来...
  • lpctstr lpcwstr

    2012-08-21 15:28:37
    #define LPCTSTR LPCWSTR #else #define LPCTSTR LPCSTR #endif    LPCTSTR A 32-bit pointer to a constant character string that is portable for Unicode and DBCS. An LPCWSTR

    #ifdef UNICODE
    #define LPCTSTR LPCWSTR
    #else
    #define LPCTSTR LPCSTR
    #endif   
       

    LPCTSTR A 32-bit pointer to a constant character string that is portable for Unicode and DBCS. An LPCWSTR if UNICODE is defined, an LPCSTR otherwise.

    LPCWSTR Pointer to a constant null-terminated string of 16-bit Unicode characters. For more information,

    LPCSTR Pointer to a constant null-terminated string of 8-bit Windows (ANSI) characters. For more information

    LP:指针
    C:const
    W:wide宽字符

     LPCTSTR类型

      如何理解LPCTSTR类型?

      L表示long指针 这是为了兼容Windows 3.1等16位操作系统遗留下来的,在win32中以及其他的32为操作系统中, long指针和near指针及far修饰符都是为了兼容的作用。没有实际意义。

      P表示这是一个指针

      C表示是一个常量

      T表示在Win32环境中, 有一个_T宏

      这个宏用来表示你的字符是否使用UNICODE, 如果你的程序定义了UNICODE或者其他相关的宏,那么这个字符或者字符串将被作为UNICODE字符串,否则就是标准的ANSI字符串。

      STR表示这个变量是一个字符串

      所以LPCTSTR就表示一个指向常固定地址的可以根据一些宏定义改变语义的字符串。

      同样, LPCSTR就只能是一个ANSI字符串,在程序中我们大部分时间要使用带T的类型定义。

      LPCTSTR == const TCHAR *

      CString 和 LPCTSTR 可以说通用。 原因在于CString定义的自动类型转换,没什么奇特的,最简单的C++操作符重载而已。

      常量字符串ansi和unicode的区分是由宏_T来决定的。但是用_T("abcd")时, 字符串"abcd"就会根据编译时的是否定一_UNICODE来决定是char* 还是 w_char*。 同样,TCHAR 也是相同目的字符宏。 看看定义就明白了。简单起见,下面只介绍 ansi 的情况,unicode 可以类推。

      ansi情况下,LPCTSTR 就是 const char*, 是常量字符串(不能修改的)。

      而LPTSTR 就是 char*, 即普通字符串(非常量,可修改的)。

      这两种都是基本类型, 而CString 是 C++类, 兼容这两种基本类型是最起码的任务了。

      由于const char* 最简单(常量,不涉及内存变更,操作迅速), CString 直接定义了一个类型转换函数

      operator LPCTSTR() {......}, 直接返回他所维护的字符串。

      当你需要一个const char* 而传入了CString时, C++编译器自动调用 CString重载的操作符 LPCTSTR()来进行隐式的类型转换。

      当需要CString , 而传入了 const char* 时(其实 char* 也可以),C++编译器则自动调用CString的构造函数来构造临时的 CString对象。

      因此CString 和 LPCTSTR 基本可以通用。

      但是 LPTSTR又不同了,他是 char*, 意味着你随时可能修改里面的数据,这就需要内存管理了(如字符串变长,原来的存贮空间就不够了,则需要重新调整分配内存)。

      所以 不能随便的将 const char* 强制转换成 char* 使用。

      楼主举的例子

      LPSTR lpstr = (LPSTR)(LPCTSTR)string;

      就是这种不安全的使用方法。

      这个地方使用的是强制类型转换,你都强制转换了,C++编译器当然不会拒绝你,但同时他也认为你确实知道自己要做的是什么。因此是不会给出警告的。

      强制的任意类型转换是C(++)的一项强大之处,但也是一大弊端。这一问题在 vc6 以后的版本(仅针对vc而言)中得到逐步的改进(你需要更明确的类型转换声明)。

      其实在很多地方都可以看到类似

      LPSTR lpstr = (LPSTR)(LPCTSTR)string;

      地用法,这种情况一般是函数的约束定义不够完善的原因, 比如一个函数接受一个字符串参数的输入,里面对该字符串又没有任何的修改,那么该参数就应该定义成 const char*, 但是很多初学者弄不清const地用法,或者是懒, 总之就是随意写成了 char* 。 这样子传入CString时就需要强制的转换一下。

      这种做法是不安全的,也是不被建议的用法,你必须完全明白、确认该字符串没有被修改。

      CString 转换到 LPTSTR (char*), 预定的做法是调用CString的GetBuffer函数,使用完毕之后一般都要再调用ReleaseBuffer函数来确认修改 (某些情况下也有不调用ReleaseBuffer的,同样你需要非常明确为什么这么做时才能这样子处理,一般应用环境可以不考虑这种情况)。

      同时需要注意的是, 在GetBuffer 和 ReleaseBuffer之间,CString分配了内存交由你来处理,因此不能再调用其他的CString函数。

      CString 转LPCTSTR:

      CString cStr;

      const char *lpctStr=(LPCTSTR)cStr;

      LPCTSTR转CString:

      LPCTSTR lpctStr;

      CString cStr=lpctStr;

    相互转换方法

    LPWSTR->LPTSTR:   W2T();
    LPTSTR->LPWSTR:   T2W();
    LPCWSTR->LPCSTR: W2CT();
    LPCSTR->LPCWSTR: T2CW();

    ANSI->UNICODE:    A2W();

    UNICODE->ANSI:     W2A();


    展开全文
  • LPCWSTR与string相互转换

    千次阅读 2019-10-18 22:25:21
    来源互联网,侵删 ...string char*转LPCWSTR LPCWSTR stringToLPCWSTR(std::string orig) { size_t origsize = orig.length() + 1; const size_t newsize = 100; size_t convertedChars = 0; wchar_t ...
  • string 转LPCWSTR

    千次阅读 2019-01-22 17:22:04
    LPCWSTR stringToLPCWSTR(std::string orig) {  size_t origsize = orig.length() + 1;  const size_t newsize = 100;  size_t convertedChars = 0;  wchar_t *wcstring = (wchar_t *)malloc(sizeof(wch...
  • char*转为LPCWSTR

    2010-07-27 10:26:11
    char*转为LPCWSTR,在UNICODE环境下通常使用的是双字节,LPCWSTR类型是其中之一。VS2008就是UNICODE环境,而VC++6.0则是ASCI环境
  • char转LPCWSTR (2).docx

    2020-12-08 10:17:01
    在Windows编程中,经常会碰到字符串之间的转换,char*转LPCWSTR也是其中一个比较常见的转换 下面就列出几种比较常用的转换方法
  • 怎么转化为LPCWSTR

    2018-06-04 09:24:00
    怎么转化为LPCWSTR wstring a = L"hello ,中国"; LPCWSTR b; b =(LPCWSTR) a.c_str(); RemoveDirectory(b); C++中L和_T()之区别 字符串前面加L表示该字符串是Unicode字符串。_T是一...
  • string类型转LPCWSTR

    2020-08-11 09:26:30
    LPCWSTR 是一个指向宽字符串的常量字符指针,是一个指向unicode编码字符串的32位指针,所指向字符串是wchar型,而不是char型。 LPWSTR 是一个32位指向Unicode字符串指针,相当于wchar_t*; LPCSTR 是Win32和VC++所...
  • 输入LPCWSTR类型字符串

    2019-10-07 05:50:50
    LPCWSTR tmp = L"xxx"; char*转到LPCWSTR LPCSTR(charTmp) 转载于:https://www.cnblogs.com/hont/p/4188599.html
  • #ifdef UNICODE#define LPCTSTR LPCWSTR#else#define LPCTSTR LPCSTR#endif LPCTSTR A 32-bit pointer to a constant character string that is portable for Unicode and DBCS. An LPCWSTR if UNICODE is defi...
  • LPCTSTR LPCWSTR LPCSTR含义

    2017-07-13 15:45:49
    #define LPCTSTR LPCWSTR  #else  #define LPCTSTR LPCSTR  #endif    LPCTSTR A 32-bit pointer to a constant character string that is portable for Unicode and DBCS. An LPCWSTR
  • string 转换为 LPCWSTR

    2019-04-23 10:58:34
    LPCWSTR stringToLPCWSTR(std::string orig) { size_t origsize = orig.length() + 1; size_t convertedChars = 0; wchar_t *wcstring = (wchar_t *)malloc(sizeof(wchar_t)*(orig.length()-1)); mbstowc.....
  • LPCTSTR LPCWSTR LPCSTR区别

    2017-03-09 12:18:41
    #define LPCTSTR LPCWSTR #else #define LPCTSTR LPCSTR #endif    LPCTSTR A 32-bit pointer to a constant character string that is portable for Unicode and DBCS. An LPCWSTR
  • std::string to LPCWSTR

    2020-11-16 14:42:14
    LPCWSTR stringToLpcwstr(const std::string& orig) { int len; int slength = orig.length() + 1; len = MultiByteToWideChar(CP_ACP, 0, orig.c_str(), slength, 0, 0); wchar_t * buf = new wchar_t[len]...
  • LPCSTR 、LPSTR、 LPWSTR and LPCWSTR为指向不同类型字符串的指针。
  • 1、string类型转LPCSTR string str="abcd"; ...2、string类型转LPCWSTR 自定义函数 str2LPCWSTR 方法一 LPCWSTR stringtoLPCWSTR(string str){ size_t strsize = str.length() + 1; con...
  • 错误 1 error C2664: “HWND FindWindowW(LPCWSTR,LPCWSTR)”: 无法将参数 2 从“char [7]”转换为“LPCWSTR” 原因: VS2013创建工程时默认使用的是Unicode字符集,需设置为:多字节字符集,步骤如下: 【项目...
  • char*转LPCWSTR解决方案

    千次阅读 2015-08-12 11:46:00
    在Windows编程中,经常会碰到字符串之间的转换,char*转LPCWSTR也是其中一个比较常见的转换。下面就列出几种比较常用的转换方法。 1、通过MultiByteToWideChar函数转换  MultiByteToWideChar函数是将多字节...
  • QT中QString 和 LPCWSTR 的相互转换

    千次阅读 2018-08-31 20:55:33
    在windosw 编程中,常用到LPCWSTR 变量,QT中最常用到QString,下面提供QString和LPCWSTR 相互转换的方法 1.把 LPWSTR 转换成QString  LPCWSTR str; QString :: fromStdWString(str); 2.把QString 转换成 ...
  • 在Windows编程中,经常会碰到字符串之间的转换,char*转LPCWSTR也是其中一个比较常见的转换。下面就列出几种比较常用的转换方法。 1、通过MultiByteToWideChar函数转换  MultiByteToWideChar函数是将多字节转换为...
  • C++ char*转LPCWSTR

    千次阅读 2019-06-20 10:04:55
    首先头文件要导入 #include <...在Windows编程中,经常会碰到字符串之间的转换,char*转LPCWSTR也是其中一个比较常见的转换。下面就列出几种比较常用的转换方法。 1、通过MultiByteToWideChar函数转...
  • CString转LPCWSTR: LPCWSTR wstr; CString str(_T(“12354”)); wstr=str; 如此CString便转化为了LPCWSTR类型 int转LPCWSTR: wchar_t wstr[10]; int i = 30; _itow_s( i, wstr, 10, 10); wstr便...
  • 自己整理的,谢谢巨人们。 LPCTSTR: L :表示long指针; C :表示一个常量 T :表示在Win32环境中, 有一个_T宏 STR:表示这个变量是一...LPCWSTR: LP:指针 C:const W:wide宽字符 STR表示这个变量是一个字符串 ...
  • Qt中如何将char*转LPCWSTR

    千次阅读 2017-03-13 16:48:30
    LPCWSTR pStr= LPCWSTR(QString("Gavin").utf16());

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,333
精华内容 6,133
关键字:

lpcwstr