怎么将char型指针转换成wchar_t型指针
如何将char型指针转换成wchar_t型指针
我知道可以再数据定义的时候用_T()或者是TEXT()来实现像这样的东西
现在我希望有一个函数参数是char型指针,如何在函数体里面把它变成wchar_t类型的
说的在具体点就是我想把连接ODBC的api封进类里边,我想把实例名,用户名和密码当成参数传进去,但是SQLConnect这个函数需要几个sqlwchar*也就是wchar_t*型的参数,该怎么办
------解决方案--------------------
首先:
wchar_t *w=_T("This is a char");
你这个是错误的理解.
wchar_t *w = L"This is a char"; 这才是正确的写法.
_T()和TEXT()实际上是一个宏, 会根据你IDE的编译环境, 决定使用ASCII还是UNICODE
使用_T()或者TEXT()应该对应的是 TCHAR
TCHAR *w = _T("This is a char");
当你的VS环境是UNICODE的时候它会被替换成: wchar_t* w = L"This is a char"
当前的VS环境是"多字符集"时, 它会被替换成: char * w = "This is a char"
另,转换UNICODE to ASCII 看这个帖子:
http://bbs.****.net/topics/390805252
------解决方案--------------------
如果只是英文字符的话 把char*扩大两倍 每个字符填充一个0就可以了
我知道可以再数据定义的时候用_T()或者是TEXT()来实现像这样的东西
wchar_t *w=_T("This is a char");
现在我希望有一个函数参数是char型指针,如何在函数体里面把它变成wchar_t类型的
说的在具体点就是我想把连接ODBC的api封进类里边,我想把实例名,用户名和密码当成参数传进去,但是SQLConnect这个函数需要几个sqlwchar*也就是wchar_t*型的参数,该怎么办
mydb::mydb(const char*dbname, const char*user, const char*passwd)
{
ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
ret = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
ret = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
ret = SQLConnect(hdbc, dbname, SQL_NTS, user, SQL_NTS, passwd, SQL_NTS);
//这里提示错误
/*错误 1 error C2664:
“SQLRETURN SQLConnectW(SQLHDBC,SQLWCHAR *,
SQLSMALLINT,SQLWCHAR *,SQLSMALLINT,SQLWCHAR *,
SQLSMALLINT)”: 无法将参数 2 从“const char *”转换为“SQLWCHAR *”
d:\programing practice\mytest\mytest\mydb.cpp 9 1 mytest
*/
}
------解决方案--------------------
首先:
wchar_t *w=_T("This is a char");
你这个是错误的理解.
wchar_t *w = L"This is a char"; 这才是正确的写法.
_T()和TEXT()实际上是一个宏, 会根据你IDE的编译环境, 决定使用ASCII还是UNICODE
使用_T()或者TEXT()应该对应的是 TCHAR
TCHAR *w = _T("This is a char");
当你的VS环境是UNICODE的时候它会被替换成: wchar_t* w = L"This is a char"
当前的VS环境是"多字符集"时, 它会被替换成: char * w = "This is a char"
另,转换UNICODE to ASCII 看这个帖子:
http://bbs.****.net/topics/390805252
------解决方案--------------------
如果只是英文字符的话 把char*扩大两倍 每个字符填充一个0就可以了