wchar_t char string wstring 之间的转换
wchar_t char string wstring 之间的转换
转:http://blog.csdn.net/lbd2008/article/details/8333583
在处理中文时有时需要进行wchar_t,char,string,wstring之间的转换。
其中char和string之间、wchar_t和wstring之间的转换较为简单,代码在vs2010下测试通过。
#include <iostream>
#include <string>
#include <tchar.h>
#include <Windows.h> using namespace std; //Converting a WChar string to a Ansi string
char *w2c(char *pcstr,const wchar_t *pwstr, size_t len)
{
int nlength=wcslen(pwstr);
//获取转换后的长度
int nbytes = WideCharToMultiByte( , , pwstr, nlength, NULL,,NULL, NULL );
if(nbytes>len) nbytes=len;
// 通过以上得到的结果,转换unicode 字符为ascii 字符
WideCharToMultiByte( ,, pwstr, nlength, pcstr, nbytes, NULL, NULL );
return pcstr ;
} int main(){ setlocale(LC_ALL,"chs");
char* cc = "this is a char 测试";
wchar_t* wcc = L"this is a wchar 测试";
string str("this is a string 测试 ");
wstring wstr = L"this is a wstring 测试"; //string to char
const char* char_test = str.c_str();
//cout<<"char_test:"<<char_test<<endl; //char to string
string ss = cc;
//cout<<"ss is :"<<ss<<endl; //wstring to wchar
const wchar_t* wchar_test = wstr.c_str();
//wcout<<wchar_test<<endl; //wchar to wstring
wstring wss = wcc;
wcout<<wcc<<endl; //char to wchar_t
wchar_t *wc = new wchar_t[str.size()+];
//swprintf(wc,L"%S",cc);
//wcout<<cc<<endl;
delete []wc; // wchar_t to char
char *pcstr = (char *)malloc(sizeof(char)*( * wcslen(wcc)+));
memset(pcstr , , * wcslen(wcc)+ );
w2c(pcstr,wcc, * wcslen(wcc)+) ;
free(pcstr); system("pause");
return ;
}
wchar_t char string wstring 之间的转换的更多相关文章
- wchar_t,char,string,wstring等的总结
一.LPSTR LPCSTR LPTSTR LPCTSTR等 确定的类型: LPSTR = CHAR * = char * LPCSTR = const CHAR * = char * //c意为co ...
- Char* ,CString ,WCHAR*之间的转换
关于Char* ,CString ,WCHAR*之间的转换问题 GDI+所有类的接口函数如果要传递字符串作为参数的话,似乎都用UNICODE串,即WCHAR*.我开始也被整得晕头转向,因为窗口编程所用 ...
- QString和char字符串数组之间的转换 (转)
做串口通信时,碰到这样的问题,在Qt的界面中,我用QLineEdit对象负责显示发送和接收的文本,对其中的数据进行读取和显示使用的数据类型都是QString:但是,在对串口设备进行读写时,数据使用的形 ...
- Java基本数据类型、包装类与String类之间的转换
一.基本数据类型与包装类之间的转换: import org.junit.Test; public class MainTest { /** * 基本数据类型与包装类之间的转换 */ @Test pub ...
- 关于Char* ,CString ,WCHAR*之间的转换问题
GDI+所有类的接口函数如果要传递字符串作为参数的话,似乎都用UNICODE串,即WCHAR*.我开始也被整得晕头转向,因为窗口编程所用往往是CString,用IO流读文件数据又得到char *.得益 ...
- c++中char*\wchar_t*\string\wstring之间的相互转换
string U2A(const wstring& str)//Unicode字符转Ascii字符 { string strDes; if ( str.empty() ) goto __end ...
- string与wstring之间的转换
#include <string>std::string ws2s(const std::wstring& ws){ std::string curLocale = setl ...
- char*,wchar_t*,CString和BSTR之间的转换
前言 本文并不尝试列举出所有的转换方法,只列举作者认为方便易用的方法. 1.char*和wchar_t*的相互转换 可以利用中间类_bstr_t(头文件comdef.h)方便的进行相互转换 const ...
- QString和char字符数组之间的转换(QTextCodec.toUnicode方法,特别注意\0的问题)
How can I convert a QString to char* and vice versa ?(trolltech) Answer:In order to convert a QStrin ...
随机推荐
- A8几种内存
1.SD卡(程序可写入,当成最次硬盘来用) 2.nandflash(程序可写入,当成一般硬盘来用) 3.DDR2(当A8板子的内存条来用)
- git am PATCH_FILE_NAME自动打patch失败后的操作方法
1.找到打入patch不成功的patch 从打入patch的失败信息可以找到 2.根据patch的index重新打入 patch,将可以合并的内容合并,冲突的部分单独生成文件 比如出问题patch的i ...
- Vue+Webpack配置css-loader时报错:Module build failed: Unknown word
使用Vue+Webpack搭建工程时,在webpack.config.js中的module的rules里针对各种文件配置加载工具.在针对css文件配置时遇到一个问题:打包构建时报错——Module b ...
- 记一次Servlet中getAttribute的错误.
package com.ykmimi.order.servlet; import java.io.IOException; import javax.servlet.RequestDispatcher ...
- Angel 实现FFM 一、对于Angel 和分布式机器学习的简单了解
Angel是腾讯开源的一个分布式机器学习框架.是一个PS模式的分布式机器学习框架. https://github.com/Angel-ML/angel 这是github地址. 我了解的分布式机器学 ...
- activemq、rabbitmq、kafka原理和比较
一.activemq 虽然是java写的消息队列,但是提供Java, C, C++, C#, Ruby, Perl, Python, PHP各种客户端,所以语言上是没什么问题的.配置和使用,基本上是j ...
- 随机梯度下降算法求解SVM
测试代码(matlab)如下: clear; load E:\dataset\USPS\USPS.mat; % data format: % Xtr n1*dim % Xte n2*dim % Ytr ...
- bzoj-3195-状压dp
3195: [Jxoi2012]奇怪的道路 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 600 Solved: 395[Submit][Statu ...
- 基于Oracle的SQL优化(崔华著)-整理笔记-第5章“Oracle里的统计信息”
第5章“Oracle里的统计信息” 详细介绍了Oracle数据库里与统计信息相关的各个方面的内容,包括 Oracle数据库中各种统计信息的分类.含义.收集和查看方法,以及如何在Oracle数据库里正确 ...
- ORACLE导入导出工具的使用
ORACLE导出工具exp的使用: 1.将数据库TEST(远程的数据库必须为连接标志符)完全导出,用户名system,密码manager,导出到D:\daochu.dmp中: exp s ...