草庐IT

alias_wchar_t

全部标签

c++ - 函数参数中的 `type_alias<char[N]>{}` VS `char[N]{}`

环境:x86-64Clang6.0.0函数的定义:voidfoo(constchar*){}foo(char[16]{});//houston,thereisaproblem!foo(type_alias{});//compilehappilytype_alias很简单:templateusingtype_alias=T;livedemon作为注释,case1case2时无法编译能够。我知道aliasdeclarations与using不是文本替换(如#define),它是该类型的同义词。但我仍然不知道如何解释这种情况。然后我给GCC一个try:prog.cc:Infunction'i

c++ - 如何声明 wchar_t 并稍后设置其字符串值?

我正在为Windows开发,我没有找到关于如何正确声明和稍后设置unicode字符串的足够信息。到目前为止,wchar_tmyString[1024]=L"MyTestUnicodeString!";我假设上面所做的是[1024]是分配的字符串长度,我需要在该字符串中包含最多的字符数。L""确保引号中的字符串是unicode(我发现的一个alt是_T())。现在稍后在我的程序中,当我试图通过以下方式将该字符串设置为另一个值时,myString=L"Anothertext";我遇到编译器错误,我做错了什么?另外,如果有人有简单而深入的unicode应用程序资源,我想提供一些链接,这些链接

c++ - 将 wchar_t 转换为 int

如何将wchar_t('9')转换为int(9)?我有以下代码,用于检查peek是否为数字:if(iswdigit(peek)){//storepeekasnumeric}我可以只减去'0'还是有一些我应该担心的Unicode细节? 最佳答案 如果问题只涉及'9'(或罗马语之一数字),只需减去'0'就是正确的解决方案。如果您关心iswdigit返回的任何内容非零,但是,问题可能要复杂得多。这标准说iswdigit返回一个非零值,如果它参数是“十进制数字宽字符代码[在当前本地]”。这是模糊的,并由语言环境决定准确定义是什么意思。在“C

c++ - 检查 WCHAR 是否包含字符串

我有变量WCHARsDisplayName[1024];如何检查sDisplayName是否包含字符串“example”? 最佳答案 if(wcscmp(sDisplayName,L"example")==0);//thenitcontains"example"else;//itdoesnot这不包括sDisplayName中的字符串以“example”开头或中间有“example”的情况。对于这些情况,您可以使用wcsncmp和wcsstr。此外,此检查区分大小写。如果sDisplayName包含垃圾,这也会中断-i。e.不是空终

c++ - wchar 以一个或两个空字节结尾?

我只是不明白,也找不到太多关于wcharend的信息。如果它以单个空字节结尾,如果像“009A”这样的东西代表一个unicode符号,它怎么知道它还没有结束?如果它以两个空字节结尾?好吧,我不确定,需要确认。 最佳答案 由于宽字符串是宽字符数组,它甚至不能以单字节NUL结尾。它是一个两字节的NUL。(C/C++中的数组只能包含相同类型的成员,因此大小相同)。此外,对于ASCII标准字符,总是有一个或三个单字节0,因为只有扩展字符以非零第一个字节开头(取决于wchar_t是16位还是32位宽-为简单起见,我假设16位和小端):HELL

c++ - 为什么C/C++会自动将char/wchar_t/short/bool/enum类型转换为int?

因此,如果我理解得很好,积分提升提供了:char、wchar_t、bool、enum、short类型总是转换为int(或无符号整数)。然后,如果表达式中有不同的类型,将应用进一步的转换。我理解得很好吗?如果是,那么我的问题是:它为什么好?为什么?不要成为不必要的char/wchar_t/bool/enum/short吗?我的意思是例如:charc1;charc2;c1=c2;正如我之前所描述的,char总是被转换为int,所以在这种情况下,在自动转换之后它看起来像这样:intc1;intc2;c1=c2;但我不明白为什么这样好,如果我知道char类型就足以满足我的需要的话。

c++ - 错误 : cannot convert 'const wchar_t [13]' to 'LPCSTR {aka const char*}' in assignment

//includethebasicwindowsheaderfile#include#include//theWindowProcfunctionprototypeLRESULTCALLBACKWindowProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam);//theentrypointforanyWindowsprogramintWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow){//thehandleforthew

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

这个问题在这里已经有了答案:Howtoconvert'wchar_t*'to'constchar*'(1个回答)关闭9年前。我是c++的新手,同时在windowsCE.netcompact应用程序上工作尝试将六边形数据写入文件时CStringdataBlock1;dataBlock1="";CStringtemp;for(inti=0;i我收到此错误无法将参数1从wchar*转换为constchar*在使用下面的写入函数将六边形数据写入文件时打开out.write(myReader.dataBlock1.GetBuffer(),myReader.dataBlock1.GetLength

c++ - 使用 mbstowcs_s 将 char* 转换为 wchar_t*

我试过将char*转换为wchar_t*,但我在使用mbstowcs时遇到了一些问题,而VisualStudio需要mbstowcs_s...char*port;size_tsize=strlen(port)+1;wchar_t*portName=newwchar_t[size];mbstowcs(portName,port,size);如何将函数更改为mbstowcs_s? 最佳答案 当使用安全方法的修复如此简单时,我不建议禁用安全代码警告,所以你开始吧:constchar*port="8080";size_tsize=strle

c++ - wchar_t 指针

这有什么问题:wchar_t*t=newwchar_t;t="Tony";我想我可以使用一个wchar_t指针作为一个字符串... 最佳答案 您的代码有两个问题。首先,"Tony"是一个指向char字符串的指针。L"Tony"是合适的宽字符串。其次,您通过new分配了单个wchar_t,然后通过将指针重新分配给Tony立即失去对它的跟踪。这会导致内存泄漏。 关于c++-wchar_t指针,我们在StackOverflow上找到一个类似的问题: https://