草庐IT

c++ - 无法将 'LPCWSTR {aka const wchar_t*}' 转换为 'LPCSTR {aka const char*}

我一直在尝试让Glew和opengl3.2在win32上下文中使用代码块(minGW)。我找到了一个不错的小教程here因为我一直在努力弄清楚在代码块中编译glew是否真的可行,所以我想在学习教程之前先试用一下源代码,看看它是否可行。在稍微调整代码后,我尝试编译并遇到了几个我以前从未见过的错误。它们如下|Infunction'boolcreateWindow(LPCWSTR,int,int)':||73|error:cannotconvert'LPCWSTR{akaconstwchar_t*}'to'LPCSTR{akaconstchar*}'inassignment||80|erro

c++ - 使用 TCHAR 时出错,无法转换为 wchar_t

有人要求我向现有的旧项目添加功能,但我无法构建它。它处理unicode字符串,但我收到很多关于使用TCHAR的错误。特别是几乎每个错误都是TCHAR不能转换为或用作wchar_t。根据我在许多不同文章中看到的情况,我尝试使用#define_UNICODE或#defineUNICODE,但它们都没有解决问题。这是一段代码:#include#include#include#include#include#include#include#include#include#include#include#pragmacomment(lib,"wininet.lib")usingnamespace

c++ - 使 size_t 和 wchar_t 可移植?

据我了解,size_t和wchar_t的表示完全是特定于平台/编译器的。例如,我读到Linux上的wchar_t现在通常是32位,但在Windows上是16位。有什么方法可以在我自己的代码中将它们标准化为一组大小(int、long等),同时仍然保持与两个平台上现有标准C库和函数的向后可比性?我的目标基本上是做一些类似typedef的事情,使它们成为固定大小。在不破坏某些东西的情况下这可能吗?我应该这样做吗?有没有更好的办法?更新:我想这样做的原因是我的字符串编码在Windows和Linux上都是一致的谢谢! 最佳答案 听起来您正在寻

c++ - 不赞成从字符串 const 进行转换。到 wchar_t*

你好,我有一个泵类,它需要使用一个成员变量,该变量是指向包含端口地址的wchar_t数组的指针,即:“com9”。问题是,当我在构造函数中初始化此变量时,我的编译器会标记折旧转换警告。pump::pump(){this->portNumber=L"com9";}这工作正常,但每次我编译时的警告都很烦人,让我觉得我做错了什么。我尝试创建一个数组,然后像这样设置成员变量:pump::pump(){wchar_tport[]=L"com9";this->portNumber=port;}但出于某种原因,这使我的portNumber指向“F”。显然是我的另一个概念问题。感谢您帮助解决我的菜鸟问

c++ - 无法在参数传递中将 'const char*' 转换为 'WCHAR*'

我在文档中写道,用户名、IP和密码必须是constchar*,当我将变量放入constchar时,出现此错误消息。这是我的代码:#include#include#include#includeusingnamespacestd;typedefint(__cdecl*MYPROC)(LPWSTR);intmain(){HINSTANCEhinstDLL;MYPROCProcAdd;hinstDLL=LoadLibrary("LmServerAPI.dll");if(hinstDLL!=NULL){ProcAdd=(MYPROC)GetProcAddress(hinstDLL,"LmSer

c++ - 比较 2 个 wchar_t 数组

我敢肯定这太简单了,但我来自c#背景,字符串很容易,现在我要进入不受管理的世界,我很困惑。本质上,我使用EnumDisplayDevices来列出可用设备,我想以特定适配器为目标,因此我需要将DeviceString和DeviceName与一些已知值进行比较,以查看我是否有合适的适配器可以使用。但我很难过,我这样定义已知值...wchar_tdevName[]=L"Intel(R)HDGraphicsFamily";但直接比较不起作用-if(devName==theDisplay.DeviceName)strcmp似乎不适用于宽字符,所以我不知道该怎么做,有人知道怎么做吗?谢谢

c++ - 如何将 'wchar_t *' 转换为 'const char *'

如何将'wchar_t*'转换为'constchar*'?使用C++MFCVS2010。谢谢。 最佳答案 由于问题是关于MFC的,我建议如下:CStringAa="Test";CStringWw=L"Test";a=CStringA(w);w=CStringW(a);我通常需要以下转换:CStringt=_T("Test");//dependsonTCHARtypea=CStringA(t);//doesnotdependonTCHARtypew=CStringW(t);CStringW和CStringA分别有运算符LPCWSTR和

c++ - 如何将 wchar_t 转换为 LPSTR?

如何将字符串从wchar_t转换为LPSTR。 最佳答案 wchar_t字符串由16位单元组成,LPSTR是指向八位字节字符串的指针,定义如下:typedefchar*PSTR,*LPSTR;重要的是LPSTR可能以null结尾。从wchar_t转换为LPSTR时,您必须决定要使用的编码。完成后,您可以使用WideCharToMultiByte执行转换的函数。例如,下面是如何将宽字符字符串转换为UTF8,使用STL字符串来简化内存管理:#include#include#includestaticstringutf16ToUTF8(c

c++ - 如何使用 C 预处理器将连接的字符串转换为宽字符?

我正在从事一个项目,其中有许多通过连接(数字等)形成的常量字符串。例如,我有一个LOCATION宏,它将__FILE__和__LINE__格式化为一个字符串,我可以用它来知道我在哪里打印消息或错误时的代码:#define_STR(x)#x#defineSTR(x)_STR(x)#defineLOCATION__FILE__"("STR(__LINE__)")"因此,这将格式化一个位置,如“file.cpp(42)”。问题是当我尝试将结果转换为宽字符串时:#define_WIDEN(x)L##x#defineWIDEN(x)_WIDEN(x)#defineWLOCATIONWIDEN(L

c++ - 为什么 towlower() 函数不将 Я 转换为小写 я?

函数towlower()似乎在VisualStudio2012中不起作用。这是一个示例:#include#include#include#include#includeusingnamespacestd;intmain(){_setmode(_fileno(stdout),_O_U8TEXT);wcout字符保持大写。以前在这里问过类似的问题,但我找不到任何解决方案。我可以使用另一种方法来更改为小写吗? 最佳答案 使用tolower的语言环境感知版本,但不要忘记也设置C语言环境。例如:#include#include#include