该函数经常被用来处理UTF-8和ANSI格式的字符串,将它们转换为宽字节(UTF-16)

#include <iostream>
#include <Windows.h>
#include <string> #define MAXBUFFERSIZE 1024 using namespace std; int main()
{
DWORD windowStart = 0; DWORD windowEnd = 15; DWORD windowSize = 15; // buffer window containing tag candidate
wstring windowCopy;
DWORD bufferSize = MAXBUFFERSIZE;
_int64 fileRemaining; HANDLE hFile;
DWORD dwBytesRead = 0;
OVERLAPPED ol = { 0 };
LARGE_INTEGER dwPosition; TCHAR* buffer = new TCHAR[MAXBUFFERSIZE];; hFile = CreateFileW(
L"test.txt", // file to open 其中包含UTF-8格式或者ANSI格式的文本
GENERIC_READ, // open for reading
FILE_SHARE_READ | FILE_SHARE_WRITE, // share for reading and writing
NULL, // default security
OPEN_EXISTING, // existing file only
FILE_ATTRIBUTE_NORMAL, // normal file | FILE_FLAG_OVERLAPPED
NULL); // no attr. template if (hFile == INVALID_HANDLE_VALUE)
{
wprintf(L"CreateFile");
return 0;
} LARGE_INTEGER size;
GetFileSizeEx(hFile, &size); _int64 fileSize = (__int64)size.QuadPart;
double gigabytes = fileSize * 9.3132e-10;
wprintf(L"file size: %lld bytes \(%.1f gigabytes\)\n", fileSize, gigabytes); fileRemaining = fileSize; wprintf(L"file remaining: %lld bytes\n", fileRemaining); while (fileRemaining)
{ if (bufferSize > fileRemaining)
bufferSize = fileRemaining;
memset(buffer, 0, fileSize);
if (FALSE == ReadFile(hFile, buffer, bufferSize, &dwBytesRead, NULL))
{
wprintf(L"file read failed\n");
CloseHandle(hFile);
return 0;
} fileRemaining -= bufferSize;
wprintf(L"outer loop\n"); while (windowEnd < bufferSize)
{
windowSize = windowEnd - windowStart; wstring str(buffer);
wstring sub = str.substr(windowStart, windowSize);
TCHAR converted[60] = { 0 };
MultiByteToWideChar(CP_ACP, MB_COMPOSITE, (LPCCH)sub.c_str(), -1, converted, 60);
wprintf(L"windowStart:%d windowEnd:%d char:%s\n", windowStart, windowEnd, converted);
windowStart = windowEnd;
windowEnd+=windowSize; }
} delete buffer;
}

win32 - MultiByteToWideChar的示例的更多相关文章

  1. Hadoop:Windows 7 32 Bit 编译与运行

    所需工具 1.Windows 7 32 Bit OS(你懂的) 2.Apache Hadoop 2.2.0-bin(hadoop-2.2.0.tar.gz) 3.Apache Hadoop 2.2.0 ...

  2. JCEF3——谷歌浏览器内核Java版实现(一):使用jawt获取窗体句柄

    前言 最近一段时间研究谷歌浏览器内核.谷歌浏览器内核一直开源,并维护更新,它的开源项目中内核更新速度和Chrome浏览器版本更新进度一样!而且它不同于WebKit(值得一题的是谷歌浏览器已不使用Web ...

  3. PHP常用配置

    Php配置文件:php.ini(使用‘;’表示注释) Php的配置项可以在配置文件中配置,也可以在脚本中使用ini_set()函数临时配置. 语言相关配置: 1. engine:设置PHP引擎是否可用 ...

  4. VS2010 + WinDDK 搭建驱动开发环境(转)

    因工作需要,需要研究一下Windows驱动开发.我们知道,编译驱动程序主要是通过两种方案:第一种是通过WinDDK提供的build命令+source文件进行编译:另外一种是通过VC的IDE进行编译. ...

  5. VC win32 static library静态链接库简单示例

    中午在宿舍闲来没事,看到网上一篇帖子,关于静态链接库的英文示例.它在.Net上开发,我将其移到VC上开发,因此对其代码做了相应修改.帖子内容如下:(代码我已修改).原帖见:http://msdn.mi ...

  6. Python win32打印示例

    # -*- coding:utf-8 -*- # Author: Pete Yim<xpHook@gmail.com> # Date : 13-8-22 # Copyright (c) 2 ...

  7. MultiByteToWideChar和WideCharToMultiByte用法详解

    今天写ini文件的时候发现的问题: TCHAR temp[]; //strcpy_s(temp, request.newVersion); MultiByteToWideChar(CP_ACP, , ...

  8. MultiByteToWideChar和WideCharToMultiByte用法详解, ANSI和UNICODE之间的转换

    //========================================================================//TITLE://    MultiByteToW ...

  9. 在 C# 中通过 P/Invoke 调用Win32 DLL

    在 C# 中通过 P/Invoke 调用Win32 DLL 发布日期 : 1/13/2005 | 更新日期 : 1/13/2005 Jason Clark 下载本文的代码: NET0307.exe ( ...

  10. unicode ascii 互转 函数 C实现 MultiByteToWideChar/WideCharToMultiByte 详解

    void Ascii2UnicodeLen(char*src,int len,unsigned short*tar) { unsigned int word_cnt; word_cnt=MultiBy ...

随机推荐

  1. 使用Grafana 监控 minio 的部分改进

    使用Grafana 监控 minio 的部分改进 部署minio开启监控metrics的脚本 mkdir -p /data/minio/data cat << EOF > /etc/ ...

  2. [转帖]ASH REPORT SHOWS “** Row Source Not Available **”

    https://alphaoragroup.com/2022/04/06/ash-report-row-source-not-available/ Whenever in ASH report, th ...

  3. [转帖]一文带你了解mysql sql model的only_full_group_by模式

    https://zhuanlan.zhihu.com/p/368440685 Mysql only_full_group_by与Error 1055问题分析 1 声明 本文的数据来自网络,部分代码也有 ...

  4. [转帖]如何在KingbaseES数据库查看数据库和表的大小

    关键字 kingbaseES,数据库大小,表大小 1.查看单个数据库的大小 使用ksql连接到数据库,使用sys_database_size函数 kapp=# select sys_database_ ...

  5. [转帖]harbor-db restarting问题

    现象: 在安装harbor后,启动时发现harbor-db 一直是restarting,/harbor-jobservice,/harbor-core 这两是starting 状态,如下图 解决: 1 ...

  6. [转帖]自动化回归测试工具 —— AREX 上手实践

    https://my.oschina.net/arextest/blog/8589156   AREX 是一款开源的自动化测试工具平台,基于 Java Agent 技术与比对技术,通过流量录制回放能力 ...

  7. SQLSERVER2008R2 本地客户端无法连接的问题

    sqlserver 数据库无法连接问题. 1. 问题现象与简单分析 今天同事找我说一个 SQLSERVER2008R2的测试环境无法连接了. 提示信息为: 当时猜测是 数据库的 配置出问题了. 去查看 ...

  8. linux线程调度策略

    linux线程调度策略 这是一篇非常好的关于线程调度的资料,翻译自shed 目录 linux线程调度策略 Scheduling policies SCHED_FIFO: First in-first ...

  9. 一次JSF上线问题引发的MsgPack深入理解,保证对你有收获

    作者: 京东零售 肖梦圆 前序 某一日晚上上线,测试同学在回归项目黄金流程时,有一个工单项目接口报JSF序列化错误,马上升级对应的client包版本,编译部署后错误消失. 线上问题是解决了,但是作为程 ...

  10. vue3跟新视图遇见神奇现象

    场景描述 今天遇见一个问题, tableAllFun 函数中写了一个 index=1; 然后在 otherAllFun 函数中去改变这个index=2的值 奇怪的事情发生了 在视图index展示的值是 ...