草庐IT

char16-t

全部标签

c++ - 如何在 C++ 中将 CHAR 变量复制到 WCHAR 变量

我想将CHAR文件转换为UNICODE文件。我逐字符读取CHAR文件类型的文件,然后将此字符保存在CHAR变量中,然后我想将此CHAR变量复制到WCHAR变量,然后将WCHAR变量写入UNICODE文件。代码如下:#include#includeint_tmain(intargc,LPCTSTRargv[]){HANDLEhInfile,hOutfile;CHARf1;WCHARf2;DWORDRd,Wrt;INTi;CreateFile(argv[1],GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,NULL,NULL);CreateF

c++ - 在 C++ 中将 UnicodeString 转换为 const char* 的最简单方法?

我是C++的新手,在将UnicodeString转换为字符串时遇到问题,所以现在正在寻找从一种类型转换为另一种类型的最简单方法。我想使用需要字符串和UnicodeString的基本Windows函数,如何使代码工作?UnicodeStringExec="notepad";WinExec(Exec.c_str(),0);使用的环境是c++builderxe2 最佳答案 std::string不能存储unicode数据。为此你需要一个std::wstring。我以前从未听说过UnicodeString,但在这里查看API:http://

创建 16 位应用程序?

我想创建一个16位Dos应用程序并希望它在我的32位Windows7机器上使用NTVDM.exe运行。我该怎么做?我基本上希望我的应用程序通过NTVDM执行文件操作,为此我认为我首先需要一个16位应用程序,还有其他方法吗?我不需要模拟器,我需要创建一个16位应用 最佳答案 声称支持16位(MS-DOS和Win16)的几个免费C/C++编译器是DigitalMarscompiler和OpenWatcomCompiler.OpenWatcom网页目前没有响应...有一个SourceForgedownload页面。

c++ - 从 C 中的函数返回 char 数组的首选方法

我目前正在开发一个C++dll,它将一个字符串返回给调用者。为了使dll独立于构建过程的其余部分,以及C++缺少标准ABI,我不得不用C字符指针包装字符串。据我所知,有两种以纯C方式返回字符串的可能性://Method1boolFoo1(wchar_t*s1,intlen){//Needsspacefor6chars+nullterminatorif(len目前是否有任何指南支持这两种解决方案中的一种?我已经看到方法1主要用于WindowsAPI,这可能是由于历史原因。但是,我也没有看到使用第二种方法有任何负面影响,这消除了调用者事先分配内存的需要。唯一的缺点是释放分配的内存的责任现在

我认为 Ruby UTF-16 编码

我有一个在Windows上运行的Ruby程序,它使用Open3调用一个shell命令(已知输出UTF-16):attrs={}attrs[:stdout],attrs[:stderr],status=Open3.capture3(command)unlessattrs[:stderr].nil?beginattrs[:stderr].force_encoding(Encoding::UTF_16LE).encode!(Encoding::UTF_8)rescue=>eattrs[:stderr]=attrs[:stderr].bytes.to_json.encode!(Encoding

c++ - Windows 使用带有 UTF-16 的 char * 函数

我将一个应用程序从Linux移植到Windows。在Linux上我使用libmagic在Windows上我不乐意从中删除的库。问题是我需要将以UTF-16编码保存的文件名传递给这样的函数:intmagic_load(magic_tcookie,constchar*filename);不幸的是,它只接受constchar*filename。我的第一个想法是将UTF-16字符串转换为本地编码,但存在一些问题-比如字符串可以包含例如中文符号和本地编码可能是俄语。结果我们将在输出中得到垃圾,程序将无法达到其目标。转换为UTF-8也无济于事,因为这是Windows,Windows以UTF-16格

c++ - win32 GUI 在窗口中显示来自 char 数组变量的文本

我希望使用win32将字符数组中的字符显示到窗口中。第二个参数类型错误。我该如何解决这个问题?谢谢chardata[5]="hello";CreateWindow(TEXT("STATIC"),TEXT(data),WS_VISIBLE|WS_CHILD|WS_BORDER|ES_AUTOVSCROLL,10,50,300,300,hWnd,(HMENU)none,NULL,NULL); 最佳答案 constTCHAR*data=TEXT("hello");//LPCTSTRCreateWindow(TEXT("STATIC"),d

windows - 16 位程序是否在 32 位操作系统上以虚拟 8086 模式运行?

我想确认几件事。我正在为8086编写汇编语言程序。我正在使用masm611汇编器进行组装。如果我在32位窗口的命令提示符下运行和调试808616位实模式程序,它是否使用和修改实际的cpu寄存器和内存?windows32bit下程序运行在virtualmode86吗?此外,如果我使用PWBMicrosoftProgrammers’Workbench中的CodeView调试器调试程序,如下所示:PWB请确认CodeView调试器中的寄存器和内存值是否是硬件中的实际值并且正在变化。此外,当我在PWB中运行程序时,它使用32位Windows下的实际硬件。 最佳答案

c++ - 检查UTF-8是wchar_t还是char?

我正在调用zlibAPIzipOpen,它从我的C++项目创建一个新的zip文件。函数签名是externzipFileZEXPORTzipOpen(constchar*pathname,intappend)。此调用最终调用fopen以创建文件。但是,此函数不支持宽字符,我想通过发送UTF-8格式(由char*和fit函数签名表示)并在调用fopen之前检查是否字符串包含非ascii字符,如果没有,像以前一样调用fopen。如果是,转换为宽字符串(wchar_t)并调用_wfopen。所以问题是是否有一个C/C++API可以检查UTF-8格式的字符串是否包含非ascii字符?基本上我正在

c++ - 返回 char* 函数的内存管理

今天,我没有多想,写了一个简单的函数,根据给定枚举值的switch语句返回一个char*。然而,这让我想知道如何释放那段内存。我所做的是这样的:char*func(){char*retval=newchar[20];//Switchblahblah-willalwaysreturnsomevalueotherthanNULLsincedefault:returnretval;}如果这是一个天真的问题,我深表歉意,但是释放内存的最佳方式是什么,因为我无法在返回后删除内存,显然,如果我之前删除它,我将不会有返回值.我认为可行的解决方案是这样的voidfunc(char*&in){//bla