可能因爲默認用Unicode 所以LPTSTR\LPCWSTR都被定義成Unicode類型的字符串 ,char != wchar
TCHAR到LPVOID不同的類型要強制類型轉換 TCHAR szBuf(128);的意思並不是TCHAR szBuf[128];
解决办法:
就是楼上说的原因,把C:\\File.txt改成_T("C:\\File.txt"),
把Hello World!"改成_T("Hello World!")试试
扩展:
大家一起做一个项目,经常发现有的人爱用strcpy等标准ANSI函数,有的人爱用_tXXXX函数,这个问题曾经搞的很混乱。为了统一,有必要把来龙去脉搞清楚。
为了搞清这些函数,就必须理请几种字符类型的写法。char就不用说了,先说一些wchar_t。wchar_t是Unicode字符的数据类型,它实际定义在<string.h>里:
typedef unsigned short wchar_t;
不能使用类似strcpy这样的ANSI C字符串函数来处理wchar_t字符串,必须使用wcs前缀的函数,例如wcscpy。为了让编译器识别Unicode字符串,必须以在前面加一个“L”,例如:
wchar_t *szTest=L"This is a Unicode string.";
下面在看看TCHAR。如果你希望同时为ANSI和Unicode编译的源代码,那就要include TChar.h。TCHAR是定义在其中的一个宏,它视你是否定义了_UNICODE宏而定义成char或者wchar_t。如果你使用了TCHAR,那么就不应该使用ANSI的strXXX函数或者Unicode的wcsXXX函数了,而必须使用TChar.h中定义的_tcsXXX函数。另外,为了解决刚才提到带“L”的问题,TChar.h中定义了一个宏:“_TEXT”。
以strcpy函数为例子,总结一下:
.如果你想使用ANSI字符串,那么请使用这一套写法:
char szString[100];
strcpy(szString,"test");
.如果你想使用Unicode字符串,那么请使用这一套:
wchar_t szString[100];
wcscpyszString,L"test");
.如果你想通过定义_UNICODE宏,而编译ANSI或者Unicode字符串代码:
TCHAR szString[100];
_tcscpy(szString,_TEXT("test"));
分享到:
相关推荐
一种windows下const char*转LPCWSTR的方法演示
C++char无法转为LPCWSTR的解决方法收集。这是我自己在百度上搜索回来的方法的小归纳,是基于Vs2010开发平台的。
golang调用c++DLL返回值为char*参数为const char*,读取返回DLL返回值,传递char*型参数
std::string、char*、const char*转托管byte数组或托管字符串String
(const) char 转CString 详解(字符串类型转换详解,不断补充)
能够按照格式化输出字符串数据,长度不受限制,亲测十几兆都正常。 #include using namespace std;
比如:“不能将参数 1 从“const char [5]”转换为“LPCTSTR””之类的问题。 在此文档中告诉你怎么转换。 cstring 转换 char cstring 转换 int cstring 转换 double 、float 等等 以及他们的互转 ...
UNICODE下宽字符的CString转换为const char 和char到WCHAR的相互转换
char*是从学习C语言开始就已经和我们形影不离的了,有许多API都是以char*作为参数输入的。所以熟练掌握三者之间的转换十分必要。 以下我用简单的图示指出三者之间的关系,并以标号对应转换的方法。 1 string to ...
keyFilePath 从网页端或小工具获取到的授权码文件路径 const char* 无 无 type 联网激活或不联网激活标识位 const char* 无 0:联网激活 1:不联网激活 返回结果 含义 类型 范围或类型 剩余天数 int 1-90 永久授权...
const char* pCh; // 指向字符串常量的指针; 表示pch是一个指针,指向字符串常量。根据需要还可以指向另一个字符串。 但字符串不能被改变。 char* const pCh; // 指向字符串的常量指针; 表示pch是一个字符串常...
代码如下://string –> const char string str2ch; str2ch.c_str(); //============================= //string –> char * //先转为 const char , 然后 转char * char TargetFile[strlen...
const的用法
//将一个大数类型转换为一个CString类型 int Getinput(byteint result,CString input); //将字符串转换为对应的大数形式 int Getinput1(byteint result,unsigned long input); //将长整形数转换为对应的大数形式 ...
c代码-C: []数组、*指针、&引用(别名) const char* str;等同于char const* str; char* const str;
项目--属性--配置属性--字符集 改为使用多字节 居然可以这么简单~~~【LPCTSTR 1、在非UNICODE环境下为 const char * 2、在UNICODE环境下为 const unsigned short * so,需要将宽字符转换为多字节】
auto break case char const
ftpclient(const char* connmode="port", const char* transmode="binary"); ~ftpclient(void); int connect(const char* addr, short port); int disconnect(); int login(const char* username, const char*...
1.exec函数族 exec 为 execute(执行),exec 函数族用来替换调用进程所执行的程序,该进程的用户空间代码和数据完全被新程序替换,从新程序的启动例程开始执行,替换前后进程的 PID 不会改变。 exec函数族中包括6个...
wince上各种类型转换特别是字符串是很头疼的,这个类是项目用的, 每个都测试好用,使用静态方法,直接引用后,写【::cv::就可以用】 typedef int u32; //转换类,所有的转换函数在这里静态 2是to的意思 //cs:...