#pragma once
#include "stdafx.h"

#ifndef _Convert_H_
#define _Convert_H_

//定义转换类
class Convert
{
public:
//定义一般函数
//------------------------------------------
ACHAR* ConvertCharPtrToAcharPtr(const char* src);
ACHAR* ConvertCharPtrToAcharPtr2(const char* src);
//
char* ConvertAcharPtrToCharPtr(const ACHAR* src);
char* ConvertAcharPtrToCharPtr2(const ACHAR* src);
//通用转换函数
_bstr_t Get_bstr_t(char* src);
_bstr_t Get_bstr_t_W(wchar_t* src);
char* GetCharPtr(_bstr_t bstrt);
wchar_t* GetWchar_t(_bstr_t bstrt);
ACHAR* GetAcharPtr(_bstr_t bstrt);

//CComBSTR GetCComBSTR(char* src);
};
#endif

#pragma once
#include "stdafx.h"
#include "Convert.h"

//----------------------------------------------------
//实现类成员函数
//----------------------------------------------------
ACHAR* Convert::ConvertCharPtrToAcharPtr(const char* src)
{
ACHAR* tmp;
_bstr_t AStr = src;
LPWSTR AstrW = LPTSTR(AStr);
tmp=(ACHAR *)AstrW;
return tmp;
}
ACHAR* Convert::ConvertCharPtrToAcharPtr2(const char* src)
{
// Convert to a wchar_t*
size_t srcsize = strlen(src) + 1;
size_t newsize = srcsize;
size_t convertedChars = 0;
wchar_t *wcstring;
wcstring=new wchar_t[newsize];
mbstowcs_s(&convertedChars, wcstring, srcsize, src, _TRUNCATE);
//wcscat_s(wcstring, L" (wchar_t *)");
//wcout << wcstring << endl;
return wcstring;
}
char* Convert::ConvertAcharPtrToCharPtr(const ACHAR* src) //
{
char* tmp;
_bstr_t bstrt(src);
tmp=GetCharPtr(bstrt);
return tmp;
}
char* Convert::ConvertAcharPtrToCharPtr2(const ACHAR* src)
{
// Convert to a char*
size_t srcsize = wcslen(src) + 1;
size_t newsize = srcsize;
size_t convertedChars = 0;
char *nstring;
nstring=new char[newsize];
wcstombs_s(&convertedChars, nstring, srcsize, src, _TRUNCATE);
return nstring;
}
//
_bstr_t Convert::Get_bstr_t(char* src)
{
_bstr_t bstrt(src);
return bstrt;
}
_bstr_t Convert::Get_bstr_t_W(wchar_t* src)
{
// Convert to a _bstr_t
_bstr_t bstrt(src);
//bstrt += " (_bstr_t)";
//cout << bstrt << endl;
return bstrt;
}
char* Convert::GetCharPtr(_bstr_t bstrt)
{
// Convert to a char*
size_t newsize = bstrt.length()+1;
char *nstring;nstring=new char[newsize];
strcpy_s(nstring,newsize,(char *)bstrt);
//strcat_s(nstring, " (char *)");
//cout << nstring << endl;
return nstring;
}
wchar_t* Convert::GetWchar_t(_bstr_t bstrt)
{
// Convert to a wchar_t*
int srcsize=bstrt.length()+1;
wchar_t *wcstring;wcstring=new wchar_t[srcsize];
wcscpy_s(wcstring,srcsize,(wchar_t *)bstrt);
//wcscat_s(wcstring, L" (wchar_t *)");
//wcout << wcstring << endl;
return wcstring;
}
ACHAR* Convert::GetAcharPtr(_bstr_t bstrt)
{
return GetWchar_t(bstrt);
}

//CComBSTR Convert::GetCComBSTR(char* src)
//{
// // Convert to a CComBSTR
// CComBSTR ccombstr(src);
// /*if (ccombstr.Append(L" (CComBSTR)") == S_OK)
// {
// CW2A printstr(ccombstr);
// cout << printstr << endl;
// }*/
// return ccombstr;
//}

char和achar互转的更多相关文章

  1. char* 与 string 互转

    因为c#强调安全性,每次意图将string的地址赋给指针时,系统都要报错,原因是系统无法计算字符串的空间和地址,这里不多bb,使用IntPtr类(using Runtime.InteropServic ...

  2. TCHAR和CHAR类型的互转,string 转lpcwstr

    https://www.cnblogs.com/yuguangyuan/p/5955959.html 没有定义UNICODE,所以它里面的字符串就是简单用" "就行了,创建工程的时 ...

  3. TCHAR和CHAR类型的互转

    http://blog.csdn.net/ahjxly/article/details/8494217 http://blog.csdn.net/b_h_l/article/details/75815 ...

  4. char*和CStringA互转

    char*->CStringA char* ch1 = "中文测试123"; CStringA str(ch1); CStringA->char* char* ch2 ...

  5. char*,const char*和string 互转

    1. string转const char* 1 string s = "abc"; 2 const char* c_s = s.c_str(); 2. const char*转st ...

  6. char,wchar_t,WCHAR,TCHAR,ACHAR的区别----LPCTSTR

    转自http://blog.chinaunix.net/uid-7608308-id-2048125.html 简介:这是DWORD及LPCTSTR类型的了解的详细页面,介绍了和类,有关的知识,加入收 ...

  7. CString与char *互转总结

    1 前言 今天在网上看论坛,发现大家对CString与Char *互转各说一词,其实我发现提问者所说的情况与回答问题的人完全不是同一情况,这里做一总结. 首先大家得清楚一件事,一般在网上提出问题的人大 ...

  8. MFC string char cstring 类型转换

    在Unicode环境下用以下转换: CString z_strCurtTime = _T(""); // 获取当前时间 CTime z_tCurTime = CTime::GetC ...

  9. Char.IsDigit与Char.IsNumber的区别

    需要判断Char是否为数字,查看了下MSDN,发现有三种方法: Char.IsDigit (aChar)              指示指定字符串中位于指定位置处的字符是否属于十进制数字类别 Char ...

随机推荐

  1. 在windows系统和linux系统中查询IP地址命令的不同

    在linux和windows系统上查询IP地址的命令是不一样的.         在linux中的命令行模式下,输入ifconfig即可查询到IP.而在windows系统下要查询IP地址需要先打开do ...

  2. k8s(openshift) 部署istio1.1

    准备工作: openshift 默认不允许UID为0的容器运行,要先授权scc以便安装istio # oc adm policy add-scc-to-user anyuid -z istio-ing ...

  3. input输入框的input事件和change事件

    input输入框的onchange事件,要在 input 失去焦点的时候才会触发: 在输入框内容变化的时候不会触发change,当鼠标在其他地方点一下才会触发: onchange 事件也可用于单选框与 ...

  4. 20190817-T1-LOJ6322「雅礼国庆 2017 Day6」Star Way To Heaven

    写这篇题解是因为作者太蒻已经忘了最小生成树了. <题面> 这个题还真是想不到最小生成树. $80\%$算法 复杂度:$\Theta(k^2 \log N )$ 用了二分答案(明显答案具有单 ...

  5. mysql查询某个字段重复的数据

    查询某个字段重复的数据 ; 查询股票重复的营业厅 ;

  6. Python学习笔记(六)Python组合数据类型

    在之前我们学会了数字类型,包括整数类型.浮点类型和复数类型,这些类型仅能表示一个数据,这种表示单一数据的类型称为基本数据类型.然而,实际计算中却存在大量同时处理多个数据的情况,这种需要将多个数据有效组 ...

  7. Hdu 4920矩阵乘法(内存访问的讲究)

    题目链接 Matrix multiplication Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K ( ...

  8. Poj 2796 单调栈

    关于单调栈的性质,和单调队列基本相同,只不过单调栈只使用数组的尾部, 类似于栈. Accepted Code: /******************************************* ...

  9. 学习笔记(1)---matlab中常见函数解析

    一.fscanf函数 matlab中函数fscanf在文件读取方面的实例如下: 从文件中有格式地读数据 fscanf 语法1:[a,count]=fscanf(fid,format,size) 根据指 ...

  10. FZU 1576【计算几何/费马点】

    Oaiei居住在A城市,并且是这个城市建设的总设计师.最近有个问题一直困恼着他.A城市里有三个大型工厂,每个大型工厂每天都需要消耗大量的石油,现在城市里要建设一个石油中转站,从石油中转站到三个大型工厂 ...