Windows 平台 UTF-8 编码转换为本机编码

std::string from_utf8(const std::string& src)
{
    int n = MultiByteToWideChar(CP_UTF8, 0, src.c_str(), (int)src.size(), 0, 0);
    std::vector<wchar_t> wbuf(n);
    MultiByteToWideChar(CP_UTF8, 0, src.c_str(), (int)src.size(), wbuf.data(), (int)wbuf.size());

    UINT cp = GetACP();
    n = WideCharToMultiByte(cp, 0, wbuf.data(), (int)wbuf.size(), 0, 0, 0, 0);
    std::vector<char> buf(n);
    WideCharToMultiByte(cp, 0, wbuf.data(), (int)wbuf.size(), buf.data(), (int)buf.size(), 0, 0);

    return std::string(buf.data(), buf.size());
}

本文来自博客园,作者:mkckr0,转载请注明原文链接:http://www.cnblogs.com/mkckr0/p/17056272.html

本文转载于网络 如有侵权请联系删除

相关文章

  • Matlab绘图(一二三维)

    大家好,又见面了,我是全栈君Matlab绘图强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数。此外,Matlab还提供了直接对图形句柄进行操作的低层绘图操作。这类操作将图形的每个图形元素(如坐标轴、曲线、文字等)看做一个独立的对象,系统给每个对象分配一个句柄,可以通过句柄对该图形元素进行操作,而不影响其他部分。本章介绍绘制二维和三维图形的高层绘图函数以及其他图形控制函数的使用方法,在此基础上,再介绍可以操作和控制各种图形对象的低层绘图操作。一.二维绘图二维图形是将平面坐标上的数据点连接起来的平面图形。可以采用不同的坐标系,如直角坐标、对数坐标、极坐标等。二维图形的绘制是其他绘图操作的基础。一.绘制二维曲线的基本函数在Matlab中,最基本而且应用最为广泛的绘图函数为plot,利用它可以在二维平面上绘制出不同的曲线。1.plot函数的基本用法plot函数用于绘制二维平面上的线性坐标曲线图,要提供一组x坐标和对应的y坐标,可以绘制分别以x和y为横、纵坐标的二维曲线。p

  • 使用 yum update 在CentOS下更新时保留特定版本的软件

    有时需要保留特定版本的软件不升级,但升级其他软件,这时就需求用到下面的技巧。当CentOS/RHEL/Fedora下的Linux服务器使用yumupdate时命令如何排除选定的包呢?Yum使用/etc/yum/yum.conf或/etc/yum.conf中的配置文件。您需要放置exclude指令来定义要更新或安装中排除的包列表。这应该是一个空格分隔的列表。允许使用通配符*和?)。当我使用yumupdate时,如何排除php和内核包?打开/etc/yum.conf文件,输入:vi/etc/yum.conf在[main]部分下面添加以下行,输入:exclude=php*kernel*最后,它应如下所示:[main] cachedir=/var/cache/yum keepcache=0 debuglevel=2 logfile=/var/log/yum.log distroverpkg=redhat-release tolerant=1 exactarch=1 obsoletes=1 gpgcheck=1 plugins=1 exclude=php*kernel*复制保存并关闭文件。您现在

  • 为什么随机 IP、随机 UA 也逃不掉被反爬虫的命运

    有些同学在写爬虫的时候,觉得只要自己每次请求都使用不同的代理IP,每次请求的Headers都写得跟浏览器的一模一样,就不会被网站发现。但实际上,还有一个东西,叫做浏览器指纹,它是不会随着你更换IP或者User-Agent而改变的。而且即使你不使用模拟浏览器,你直接使用Golang、使用Python,它们也有自己各自的指纹,并且他们的指纹每次请求也是固定的。只要网站发现某个拥有特定指纹的客户端持续高频率请求网站,它就可以把你封掉。你似乎不相信?那我证明给你看。现在,我准备一个隧道代理,如下图所示:然后,我们打开一个网站:https://ja3er.com/json.当你用电脑浏览器打开它的时候,它是这样的:不论你怎么刷新网页,这上面的字符串都是不会变的。现在,我使用Python去请求这个页面,看到的内容如下图所示:可以看到,虽然我使用了隧道代理,每次请求的IP都是不一样的,但是这个网站返回的内容始终是一样的。所以如果这不是一个测试网站,而是一个加了这个检测机制的网站,那么它轻松就能把我给屏蔽了。 这个检测算法,叫做JA3算法。这个算法在官网上面的介绍信息如下:TheJA3algorith

  • Python内置函数locals和globals对比

    这两个函数主要提供,基于字典的访问局部和全局变量的方式。在理解这两个函数时,首先来理解一下python中的名字空间概念。Python使用叫做名字空间的东西来记录变量的轨迹。名字空间只是一个字典,它的键字就是变量名,字典的值就是那些变量的值。实际上,名字空间可以象Python的字典一样进行访问每个函数都有着自已的名字空间,叫做局部名字空间,它记录了函数的变量,包括函数的参数和局部定义的变量。每个模块拥有它自已的名字空间,叫做全局名字空间,它记录了模块的变量,包括函数、类、其它导入的模块、模块级的变量和常量。还有就是内置名字空间,任何模块均可访问它,它存放着内置的函数和异常。当一行代码要使用变量x的值时,Python会到所有可用的名字空间去查找变量,按照如下顺序:1.局部名字空间–特指当前函数或类的方法。如果函数定义了一个局部变量x,Python将使用这个变量,然后停止搜索。2.全局名字空间–特指当前的模块。如果模块定义了一个名为x的变量,函数或类,Python将使用这个变量然后停止搜索。3.内置名字空间–对每个模块都是全局的。作为最后的尝试,Python将假设x是内置函数或变量。如果Py

  • Canvas 进阶(五)实现图片滤镜效果

    背景之前看过一篇写关于图片滤镜的文章,蛮有兴趣,因此作出了这个小DEMO,可以切换多种图片滤镜并提供图片下载功能。话不多说,先上demo及github地址.实现使用工具:vueiviewcanvas实现功能:图片绘制,滤镜修改,图片下载关键点:ctx.getImageData()ctx.putImageData()ctx.drawImage()滤镜逻辑1.引入iview与vue<linkrel="stylesheet"type="text/css"href="https://unpkg.com/view-design/dist/styles/iview.css"/> <scripttype="text/javascript"src="https://vuejs.org/js/vue.min.js">script> <scripttype="text/javascript"src="https://unpkg.com/vie

  • 磁盘阵列 RAID

    概述什么是RAID?RAID(RedundantArrayofIndependentDisks)即独立磁盘冗余阵列,通常简称为磁盘阵列。简单地说,RAID是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余的技术。RAID是一类多磁盘管理技术,其向主机环境提供了成本适中、数据可靠性高的高性能存储。RAID中主要有三个关键概念和技术:镜像(Mirroring)、数据条带(DataStripping)和数据校验(Dataparity)。镜像:将数据复制到多个磁盘,一方面可以提高可靠性,另一方面可并发从两个或多个副本读取数据来提高读性能。显而易见,镜像的写性能要稍低,确保数据正确地写到多个磁盘需要更多的时间消耗。数据条带:将数据分片保存在多个不同的磁盘,多个数据分片共同组成一个完整数据副本,这与镜像的多个副本是不同的,它通常用于性能考虑。数据条带具有更高的并发粒度,当访问数据时,可以同时对位于不同磁盘上数据进行读写操作,从而获得非常可观的I/O性能提升。数据校验:利用冗余数据进行数据错误检测和修复,冗余数据通常采用海明码、异或操作等算法来计算获得。利用校

  • JavaWeb| JSTL标签库看这篇文章就够了!(含案例)

    1写在前面的话今天给大家写一篇Web系列的文章,大部分人可能会觉得Web的东西很基础,如果这方面你很精通了可以忽略,但是我还是想出一系列的文章去帮助刚刚入门的小伙伴。废话不多说,今天咱们来讲讲JSTL标签库。2EL表达式在讲JSTL标签库之前,我首先给大家讲讲EL表达式,这个对于接触过web开发的人并不陌生。EL表达式全名ExpressionLanguage,它的主要目的就是简化JSP中的表达式的方法,让JSP中的代码更加的简化,他可以直接写在JSP页面当中,这样可以减少JSP脚本的编写。 EL表达式是如何从域中取数据呢?我们用jsp脚本来获取域中的数据:<%=request.getAttribute(name)%>复制我们再用EL表达式来代替上面的脚本:${requestScope.name}复制可以看到我们的代码量是减少了一些,而且可以直接通过“.”来获取数据,EL表达式最主要的作用就是获取四大域中的数据,其格式都是${EL表达式}例如:EL获得pageContext域中的值:${pageScope.key}EL获得request域中的值:${requestScope.

  • 【Oozie】Oozie中工作流workflow的定义及各种Action的配置运行

    版权声明:本文为博主原创文章,转载请注明出处。https://blog.csdn.net/gongxifacai_believe/article/details/810791341、Oozie中工作流的定义Oozie中的工作流workflow包含控制流节点和Action节点。通过workflow.xml定义,通过schema进行约束。 Workflow的控制流节点包括:start、decision、fork、join、kill、end节点。 Action是执行或计算的任务,如MapReducejob、Pigjob、ashellcommand。跑的一个MapReduce任务就是一个MapReduceAction。Action节点有2个转移:ok和error。 Workflow的Action节点包括:MapReduceAction、PigAction、Fs(HDFS)Action、SshAction、Sub-workflowAction、JavaAction。Oozie的Workflow里面运行MapReduce、Hive、Sqoop或Shell脚本。 ActionExtensions包括

  • BZOJ2337: [HNOI2011]XOR和路径(期望 高斯消元)

    题意题目链接Sol期望的线性性对xor运算是不成立的,但是我们可以每位分开算设\(f[i]\)表示从\(i\)到\(n\)边权为1的概率,统计答案的时候乘一下权值转移方程为\[f[i]=(w=1)\frac{1-f[to]}{deg[i]}+(w=0)\frac{f[to]}{deg[i]}\]高斯消元解一下注意:f[n]=0,有重边!#include<bits/stdc++.h> usingnamespacestd; constintMAXN=1001; inlineintread(){ intx=0,f=1;charc=getchar(); while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();} while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar(); returnx*f; } intN,M,deg[MAXN]; vector<i

  • ionic4在ios微信浏览器输入框聚焦问题

    记录个小问题 客户反映应用在微信浏览器上有问题,有时输入框无法聚焦从而无法输入。开发找我求助,我去试遍了主流浏览器,桌面、android、ios平台,发现仅有【ios+微信浏览器】才会出现这个问题,使用微信开发者工具调试也没有问题,最后通过工具调试微信浏览器,也没找到什么原因,一脸懵逼。找不到原因,只好去猜测,首先看样式排查一下是否屏蔽了用户选择操作,发现没有,为了避免有漏网之鱼,全局添加一个样式:[contenteditable="true"],input,textarea{ -webkit-user-select:auto!important; -khtml-user-select:auto!important; -moz-user-select:auto!important; -ms-user-select:auto!important; -o-user-select:auto!important; user-select:auto!important; }复制发现没有效果,然后感觉是键盘弹出后再收起才出现的,根据经验猜测可能是这个:BrowserModule

  • 独家|V神最新论文足足有41页?这24个要点,让你快速了解社区中立社会的正式规则

    作者|V神,ZoëHitzig,E.GlenWeyl 编译|王国玺、kou 本文源于一份来自于V神的、足足有41页的PDF文档,小编通读全文后,虽不能完全理解,但仍为你整理出了24个要点,希望可以帮助你快速了解V神描述的社区中立社会的正式规则! 生活中,我们在做决策时通常坚持:“少数服从多数”的理念。不得不说,少数服从多数是最能服众的分歧解决方案,工作量证明机制也是借鉴了这个理念来保证节点之间的共识。“少数服从多数”解决了很多争议,但是:“真理往往掌握在少数人手中”,如何科学地决策?此时问题陷入了僵局。 区块链和去中心化的思想给这个问题带来了新的思路,近日,V神在论文中提出了自由激进主义,用以实现近似最优的决策,并将其运用到了公共物品之中,解决社区中“各扫门前雪”的难题。 那么,什么是自由激进主义?如何解决搭便车问题?在社区中应用二次投票机制真的可行吗?接下来,让我们紧跟V神的脚步,一探究竟。由于V神这篇论文超级超级长,因此,小编主要针对论文中abstract、introduction和background三部分进行了初步的解读(V神的思维跳跃超级大的呀!!!),并

  • SQuAD2.0来了!新增5万人工撰写问题,且不一定有答案 | ACL最佳短论文

    允中发自凹非寺 量子位报道|公众号QbitAISQuAD2.0来了! 今日(6月13日),斯坦福NLP团队对外宣称,机器阅读理解数据集SQuAD(StanfordQuestionAnsweringDataset)完成新一波更新,将由SQuAD1.1版本迭代至SQuAD2.0。个中变化还是非常明显的。SQuAD2.0斯坦福NLP官方说,相较SQuAD1.1中的10万问答,SQuAD2.0又新增了5万个人类撰写的问题——而且问题不一定有对应答案。于是同时迭代的SQuAD2.0测试系统,不仅要求机器能从对应段落中找到问题答案,还测试机器在没有对应答案时可以sayNo,而不是瞎猜。这算是进一步加大了机器在精准回答方面的难度。目前,人类表现分别是EM——精准匹配结果:86.831分,F1——模糊匹配:89.452分。需要指出的是,SQuAD推出之初,2016年,斯坦福大学从维基百科上随机选取了500多篇文章,并进一步细分成两万多个段落。随后采用众包的方式,由人类阅读这些文章后,为每个段落提出五个问题,并对段落内的答案进行人工标注。 最后,终于构成了包含10万多个问题的阅读理解数据集SQuAD。但

  • linux----关于定位和查找

    1.top--查看进程 2.su--临时切换用户命令 [root@tomato2~]#sudosugongxijun [gongxijun@tomato2root]$ 3.whoami---我是谁查看自己目前的用身份 [gongxijun@tomato2root]$whoami gongxijun 4.exit---退出当前用户 [gongxijun@tomato2root]$exit exit [root@tomato2~]# 5.ifconfig---查看用户的ip信息mac,eth0,ip等等信息 [gongxijun@tomato2root]$ifconfig eth0Linkencap:EthernetHWaddrD0:50:99:17:37:1F inetaddr:192.168.0.155Bcast:192.168.0.255Mask:255.255.255.0 inet6addr:fe80::d250:99ff:fe17:371f/64Scope:Link UPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1 RXpackets:15

  • 给webpack提了一个pr之后......

    我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第2篇文章,点击查看活动详情前言我不是标题党啊,是真的给webpack提了一个pr,提交之后,脑子里就是一句话:“纸上学来终觉浅,绝知此事要躬行”。欲知来龙去脉,听我娓娓道来。pr如下,https://github.com/webpack/webpack/pull/16292,目前还是unreviewed状态。 阅读此文章你将会了解以下知识点,webstrom调试webpack源码过程webpack优化->deterministic属性作用如何提给开源仓库pr如何修改commit信息如何合并commit信息EasyCLA开源协议签署遇到的问题看到=学会,如果对屏幕前的大帅比大漂亮有帮助的话,点个赞什么的就太好了!背景那是一个周五的晚上,11.左右,大部分人都准备休息了,我正在做山月的linux训练营,赶巧,山月在webpack训练营里,圈出一处webpack的源码,8行左右吧。说到,此处有优化空间,可以提pr。 盯着这段代码,我看了半天,没有上下文,一脸懵圈。大部分人,没有看过源码,直接看肯定看不出毛病,我也是这部分人的一

  • 【源码】按照自己的思路研究Spring AOP源码 ②

    目录问题的提出哪一步导致了顺序的改变AbstractAdvisorAutoProxyCreator.sortAdvisors()方法总结 问题的提出 按照自己的思路研究SpringAOP源码【1】  这篇文章介绍了SpringAOP源码的核心流程,根据这篇文章最后提出的问题,我们来探讨一下为什么通知顺序是不一样的。 首先我们看一下新版本(5.3.5-SNAPSHOT)的通知顺序与输出结果,如下图: 顺序:AroundBeforeAfterAfterReturning 输出如下: =====Aroundbefore===== =====Before===== doservice =====AfterReturning===== =====After===== =====Aroundafter===== 复制 我们再来看一下旧版本(5.2.6.RELEASE)的通知顺序与输出结果,如下图: 顺序:AfterReturningAfterAroundBefore =====Aroundbefore===== =====Before===== doservice ==

  • jquery 无刷新翻页

    本例与《jquery翻页分页》的区别在于本例更实用,翻页数字太多的时候会隐藏中间的部分。数据库与《jquery翻页分页》的数据库相同    js代码   JavaScriptCode复制内容到剪贴板 <script>   $(document).ready(function(){       $(window).bind("load", function() {           page = 1;           limit = 2;           startpoint =&nbs

  • Redis简介及常见问题处理(转)

        长文前排提醒,收藏向前排提醒,素质三连(转发+在看+留言)前排提醒! 前言 Redis作为一个开源的,高级的键值存储和一个适用的解决方案,已经越来越在构建「高性能」、「可扩展」的Web应用上发挥着举足轻重的作用。 当今互联网技术架构中Redis已然成为了应用得最广泛的中间件之一,它也是中高级后端工程技术面试中面试官最喜欢问的工程技能之一,不仅仅要求着我们对基本的使用进行掌握,更要深层次地理解Redis内部实现的细节原理。 熟练掌握Redis,甚至可以毫不夸张地说已经半只脚踏入心仪的公司了。下面我们一起来盘点回顾一下Redis的面试经典问题,就不要再被面试官问得脸都绿了呀! Ps:我把重要的知识点都做成了图片,希望各位"用餐愉快"。(不错记得付餐费..点个赞留个言..) 一、基础篇 什么是Redis? 先解释Redis基本概念 Redis(RemoteDictionaryServer)是一个使用C语言编写的,开源的(BSD许可)高性能非关系型(NoSQL)的键值对数据库。 简单提一下Redis数据结构 Redis可以存储键和不同类型数据结构

  • docker

    docker安装【学习版本】 一、环境确认 1.1前提条件 目前,CentOS仅发行版本中的内核支持Docker.Docker运行在CentOS7上,要求系统为64位、系统内核版本为3.10以上。 1.2使用yum安装(CentOS7下) Docker要求CentOS系统的内核版本高于3.10,查看本页面的前提条件来验证你的CentOS版本是否支持Docker。 通过uname-r命令查看你当前的内核版本 [root@localhost~]#uname-r 复制 1.3dockerce和dockeree 从2017年3月开始docker在原来的基础上分为两个分支版本:DockerCE和DockerEE。 DockerCE即社区免费版,DockerEE即企业版,强调安全,但需付费使用。 怎么确认本地机子上是否有docker 1.输入docker命令 2.查看docker版本号 [app@yndc-tp-prd-hybris01~]$yumlistinstalled|grepdocker containerd.io.x86_641.4.11-3.1.el7@docker-ce-

  • 超微 X9DRL-iF 服务器主板简介 BIOS相关图解

    超微X9DRL-iF服务器主板简介BIOS相关图解板载串口阵列相关简介 网烁信息805   发布时间:2012-6-1521:10:09   浏览数:2745         随着IntelE5至强的面世,越来越多的客户开始选择新一代的至强平台,今天,我们就客户选择的一款超微X9DRL-iF做一些简单介绍。先看三张大图:         超微X9DRL-iF,这是一张服务器应用的主板,芯片组为intelC602芯片组,QPI链路速度最大支持到8.0GT/s,支持现在E5-2600SocketR(LGA2011)的至强处理器; 内存方面,8根内存插槽,最大可以支持到256GBDDR31600MHzECCRegisteredDIMM(256GRECCDDR31600MHz),也就是说,单根可以支持到32GRECCDDR31600MHz的内存,不过目前为止,市场上主流

  • 密码保护

    1.更新User对象,设置对内的_password classUser(db.Model):    __tablename__='user'     _password=db.Column(db.String(200),nullable=False)#内部使用   classUser(db.Model): __tablename__='user' id=db.Column(db.Integer,primary_key=True,autoincrement=True) username=db.Column(db.String(20),nullable=False) _password=db.Column(db.String(200),nullable=False)#内部使用 nickname=db.Column(db.String(50))复制   2.编写对外的password fromwerkzeug.securityimportgenerate_password_hash,check_pa

  • 开源我来了

    ——一个月-半个产品-多个开源 这一个月是忙碌的一月,从走出寝室一直到晚上12点左右回寝,忙忙碌碌,时间总觉得不够用~ 这个月学习主要集中几个几个方面: ios股票portfolio产品的开发: 1)学习js,阅读了js精粹和coffeejs开发两本书,以及多篇高性能网站开发的blog。主要思考问题:如何保证界面数据的实时更新,界面数据显示的延迟问题,以及前端数据和后端数据之间的更新,如何更加高效的通信,以及数据和界面之间如何联系? 2)用titatium开发产品,这是一款一次开发,多平台应用的开发平台,是在eclipse基础上改进用于js开发的,容易上手    并基本上把titatium的文档阅读了一遍,开发了几个界面 3)要制作一个饼图和股票线图,查找了几个图形类库,如highchart和ichart,最后选择了highchart,利用highchart的chart和pie制作出来了线性和饼状图,另外highchart提供了highstock类库,方便开发stock线图,但总觉得不适用ios开发,更适合web开发。 这个要是有时间,可以用jquerym

相关推荐

推荐阅读