关于MultiByteToWideChar与WideCharToMultiByte代码测试(宽字符与多字节字符的转换)以及字符串的转换代码测试
#pragma once
#include <stdio.h> //getchar()
#include <tchar.h>
#include <stdlib.h> //sysytem()
#include <string> //std
#include <atlstr.h> //cstring
#include <iostream> //cout using namespace std;
using std::wcout; int _tmain(int argc, _TCHAR* argv[])
{
/***** char* 转换 cstring *********/
//方式一 直接赋值
//char chArray[] = "This a cat!";
// char* p = "This a cat!";
//LPSTR p = "This a cat!";
//CString cstr = p;
//方式二 format格式转化
//CString cstr1;
//cstr1.Format("%s",p);
//cout<< cstr1 << endl;
/************ cstring转换char* ************/
//方式一(LPSTR)(LPCTSTR)强转
//CString thecstring("this a cat!");
//char *cp;
//*cp = (LPSTR)(LPCTSTR)thecstring;
//方式二 使用strcpy
//cp = new TCHAR[thecstring.GetLength() + 1];
//_tcscpy_s(cp,thecstring.GetLength() + 1, thecstring);
//方式三 使用CString::GetBuffer()
//CString s(_T("this a cat!"));
//LPTSTR cp = s.GetBuffer();
//cout<< cp << endl;
//if (NULL != cp)
//{
// *cp = _T('\0');
//*cp = _T('123');输出为 3his a cat 截断了字符
//}
//s.ReleaseBuffer(); //cout<< cp << endl; /********* WideCharToMultiByte(Unicode to Ansi) *************/
wchar_t wText[] = {L"宽字符转成窄字符!"};
DWORD dwNum = WideCharToMultiByte(CP_OEMCP, NULL, wText, -, NULL,,NULL,FALSE);
char* psText;
psText = new char[dwNum];
if (!psText)
{
delete []psText;
}
WideCharToMultiByte(CP_OEMCP, NULL, wText, -,psText, dwNum, NULL, FALSE); cout << psText << endl;
delete []psText;
psText = NULL; /********* MultiByteToWideChar(Ansi to Unicode) *************/
char cText[] = {"窄字符转成宽字符!"};
DWORD dwNum1 = MultiByteToWideChar(CP_ACP, NULL,cText, -, NULL, );
wchar_t* pwText;
pwText = new wchar_t[dwNum1];
if (!pwText)
{
delete []pwText;
}
MultiByteToWideChar(CP_ACP, NULL, cText, -, pwText, dwNum1);
wchar_t wsz[] = L"ni hao a!";//宽字符和宽字符串常量前要加L
//变量里存放的是中文的话,要设置区域使用wcout.imbue(locale("chs"));
//才能输出变量里面的中文,不然输出的是变量地址
//还可以设置全局函数setlocale(LC_ALL,"Chinese-simplified");
wcout.imbue(locale("chs"));
std::wcout << wsz << std::endl;
std::wcout << pwText << std::endl;
delete []pwText;
pwText = NULL;
//getchar();
system("pause");
return ;
}
关于MultiByteToWideChar与WideCharToMultiByte代码测试(宽字符与多字节字符的转换)以及字符串的转换代码测试的更多相关文章
- 通过编写串口助手工具学习MFC过程——(三)Unicode字符集的宽字符和多字节字符转换
通过编写串口助手工具学习MFC过程 因为以前也做过几次MFC的编程,每次都是项目完成时,MFC基本操作清楚了,但是过好长时间不再接触MFC的项目,再次做MFC的项目时,又要从头开始熟悉.这次通过做一个 ...
- unicode字符和多字节字符的相互转换接口
作者:朱金灿 来源:http://blog.csdn.net/clever101 发现开源代码的可利用资源真多,从sqlite3的源码中抠出了几个字符转换接口,稍微改造下了发现还挺好用的.下面是实现代 ...
- ANIS与UNICODE字符格式转换:MultiByteToWideChar() 和WideCharToMultiByte() 函数
资料来自: http://blog.csdn.net/holamirai/article/details/47948745 http://www.cnblogs.com/wanghao111/arch ...
- MultiByteToWideChar和WideCharToMultiByte用法详解, ANSI和UNICODE之间的转换
//========================================================================//TITLE:// MultiByteToW ...
- MultiByteToWideChar和WideCharToMultiByte用法详解
今天写ini文件的时候发现的问题: TCHAR temp[]; //strcpy_s(temp, request.newVersion); MultiByteToWideChar(CP_ACP, , ...
- UNICODE和ANSI字符串的转换(解释了MultiByteToWideChar,WideCharToMultiByte,GetTextCharsetInfo,GetTextCharset,IsDBCSLeadByte,IsDBCSLeadByteEx,IsTextUnicode一共7个函数)
继上集故事<多字符集(ANSI)和UNICODE及字符串处理方式准则 >,我们现在有一些特殊需求: 有时候我们的字符串是多字符型,我们却需要使用宽字符型:有的时候却恰恰相反. Window ...
- 使用Unicode(宽字节字符集);多字节字符集中定义宽字节变量
2012-03-25 14:54 (分类:计算机程序) 2.2 宽字符和C 宽字符不一定是Unicode.Unicode是宽字符集的一种.然而,因为本书的焦点是Windows而不是C执行的理论,所以书 ...
- C++多字节字符转换为宽字符的两种方法
目前知道有两种方式:可以提供宽字符与ANSI字符之间的转换, 第一种由COM库提供的函数 char* _com_util::ConvertBSTRToString(BSTR ); BSTR _com ...
- warning: C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
------问题-------------------- Qt项目使用 VC++ 编译器出现此错误. warning: C4819: 该文件包含不能在当前代码页(936)中表示的字符.请将该文件保存为 ...
随机推荐
- [WF4.0 实战] AutoResetEvent具体解释(线程独占訪问资源)
由来: 在学习工作流的过程中,宿主程序中会出现这么一段代码: staticAutoResetEvent instanceUnloaded = new AutoResetEvent(false); 然后 ...
- 【C#/WPF】用Thumb做可拖拽的UI控件
需求:简单的可拖拽的图片 使用System.Windows.Controls.Primitives.Thumb类 前台: <Canvas x:Name="g"> < ...
- java中的访问控制符
首先来一张图: 对于一个类而言访问控制符只有一个public和默认无修饰符.其他的几个访问修饰符对于变量和方法都可以使用. 下面介绍具体的使用. 1. 公有访问控制符(public) Java的类是通 ...
- C语言 · 淘淘的名单
算法提高 淘淘的名单 时间限制:100ms 内存限制:8.0MB 问题描述 by ZBY... :) 淘淘拿到了一份名单,他想对上面的名字进行处理,挑出一些特殊的名字,他请你来帮忙. ...
- MySQL 时间戳(Timestamp)函数
1. MySQL 获得当前时间戳函数:current_timestamp, current_timestamp() mysql> select current_timestamp, curren ...
- [uboot]What is MLO file?
转自:https://coherentmusings.wordpress.com/2012/09/05/what-is-mlo-file/ I have had the Beagle-xM for a ...
- drupal 使用步骤
一.安装 二.汉化 ①.下载语言包文件:http://localize.drupal.org/translate/languages/zh-hans ②.将 .po 文件放置到 drupal7/pro ...
- Sphinx速成指南
目录 1. Sphinx简介 1.1. 什么是全文检索 1.2. 介绍 1.3. Sphinx的特性 2. Sphinx安装(For MySQL) 2.1. Windows下安装 2.2. Linux ...
- js类型转换 之 转数字类型
手动将各类型 转换成 数字类型 JS提供了三种方法: Number(object); parseInt(string, radix); parseFloat(string, radix). 三种方法具 ...
- 科普Spark,Spark核心是什么,如何使用Spark(1)
科普Spark,Spark是什么,如何使用Spark(1)转自:http://www.aboutyun.com/thread-6849-1-1.html 阅读本文章可以带着下面问题:1.Spark基于 ...