1. 程式人生 > >CStringA,CStringW和CString之間的轉換

CStringA,CStringW和CString之間的轉換

現實中用到CStringA和CStringW的轉換,就封裝了一下。

#pragma once
class CStringToolExt
{
public:
	CStringToolExt();
	~CStringToolExt();
public:
	static CStringA CStrT2CStrA(const CString &cstrSrc);
	static CStringW CStrT2CStrW(const CString &cstrSrc);
	static CString CStrA2CStrT(const CStringA &cstrSrc);
	static CString CStrW2CStrT(const CStringW &cstrSrc);
private:
	static CStringW CStrA2CStrW(const CStringA &cstrSrcA);
	static CStringA CStrW2CStrA(const CStringW &cstrSrcW);
};


#include "stdafx.h"
#include "StringToolExt.h"


CStringToolExt::CStringToolExt()
{
}


CStringToolExt::~CStringToolExt()
{
}

CStringA CStringToolExt::CStrT2CStrA(const CString &cstrSrc)
{
#ifdef _UNICODE
	return CStrW2CStrA(cstrSrc);
#else
	return cstrSrc;
#endif
}

CStringW CStringToolExt::CStrT2CStrW(const CString &cstrSrc)
{
#ifdef _UNICODE
	return cstrSrc;
#else
	return CStrA2CStrW(cstrSrc);
#endif
}

CString CStringToolExt::CStrA2CStrT(const CStringA &cstrSrc)
{
#ifdef _UNICODE
	return CStrA2CStrW(cstrSrc);
#else
	return cstrSrc;
#endif
}

CString CStringToolExt::CStrW2CStrT(const CStringW &cstrSrc)
{
#ifdef _UNICODE
	return cstrSrc;
#else
	return CStrW2CStrA(cstrSrc);
#endif
}

CStringA CStringToolExt::CStrW2CStrA(const CStringW &cstrSrcW)
{
	int len = WideCharToMultiByte(CP_ACP, 0, LPCTSTR(cstrSrcW), -1, NULL, 0, NULL, NULL);
	char *str = new char[len];
	memset(str, 0, len * sizeof(char));
	WideCharToMultiByte(CP_ACP, 0, LPCWSTR(cstrSrcW), -1, str, len, NULL, NULL);
	CStringA cstrDestA = str;
	delete str;
	return cstrDestA;
}

CStringW CStringToolExt::CStrA2CStrW(const CStringA &cstrSrcA)
{
	int len = MultiByteToWideChar(CP_ACP, 0, LPCSTR(cstrSrcA), -1, NULL, 0);
	wchar_t *wstr = new wchar_t[len];
	memset(wstr, 0, len * sizeof(wchar_t));
	MultiByteToWideChar(CP_ACP, 0, LPCSTR(cstrSrcA), -1, wstr, len);
	CStringW cstrDestW = wstr;
	delete wstr;
	return cstrDestW;
}

相關推薦

CStringACStringWCString之間轉換

現實中用到CStringA和CStringW的轉換,就封裝了一下。 #pragma once class CStringToolExt { public: CStringToolExt(); ~CStringToolExt(); public: static CSt

簡單談談ResourceDrawableBitmap之間轉換

一直接觸這些東西,還是歸個類整理一下比較好。 Resource -> Drawable Drawable draw1 = this.getResources().getDrawable(R.drawable.icon); Drawable -> Bitmap 1. s

Java中的JDKJREJVM之間的區別

run 編譯 java 發布 開發 特性 底層 應用程序 解釋 JDK(Java Development Kit)是針對Java開發員的產品,是整個Java的核心,包括了Java運行環境JRE、Java工具和Java基礎類庫。Java Runtime Environment

Android 圖片Bitmapdrawableres資源圖片之間轉換

圖形 oid ott tor new phi mpat from vertical 一、知識介紹   ①res資源圖片是放在項目res文件下的資源圖片   ②BitMap位圖,一般文件後綴為BMP,需要編碼器編碼,如RGB565,RGB8888等。一種逐像素的顯示對象,其執

oracle函數NVLNVL2NULLIF之間的區別使用

style nbsp from oracl expr nvl2 出現 圖片 null oracle用這麽幾個函數,可以幫助我們解決數據上null或0的處理 1、NVL()函數 1.1)介紹:NVL(expr1,expr2),若expr1為null, 返回expr2; 不為

乾貨丨什麼是APISDKAPI之間有什麼關係呢?

隨著軟體規模的日益龐大,常常需要把複雜的系統劃分成小的組成部分,程式設計介面的設計十分重要,程式設計的實踐中,程式設計介面的設計首先要使軟體系統的職責得到合理劃分,良好的介面設計可以降低系統各部分的相互依賴,提高組成單元的內聚性,降低組成單元間的耦合程度,從而提高系統的維護性和擴充套件性。API

在prootbuf中 StringQByteArray互相轉換

在做專案中,應用到protobuf,通訊採用的是TCP,開發平臺是Linux和Windows下的Qt5.11.2。由於Qt TCP傳輸資料型別是QByteArray,而protobuf需要將資料轉換成string。 在正常使用過程中,QByteArray和string都可以採用以下方式進

不同進位制轉換bytesstr的轉換

參考網址: http://www.cnblogs.com/hushaojun/p/7681148.html https://blog.csdn.net/qq_15727809/article/details/83513074 1,函式說明(幫助文件): oct() Return the

$_GET$HTTP_GET_VARS$_POST$HTTP_POST_VARS之間的關係相容問題

$_GET和$HTTP_GET_VARS,$_POST和$HTTP_POST_VARS之間的關係和相容問題 解決方法:   在PHP 4.1.0 版本之前,使用$HTTP_GET_VARS,$HTTP_POST_VARS; 在PHP 4.1.0

tryfinallyreturn之間的關係

一,finally不是一定會被執行的(1,try沒別執行,2.system.exit(0)) 二,沒有return的普通執行方式 public static void main(String[] args) { try {

ServiceIntentServiceServiceActivity之間通訊

Service /** * Android四大元件之一,Service 是長期執行在後臺的應用程式元件。 * Service 不是程序,也不是執行緒,它和應用程式在同一個程序中 * Service中不能

Java日期字串之間轉換,自己封裝日期與字串轉換

一:日期與字串轉換 public class DateFormatDemo { public static void main(String[] args) throws ParseException { //日期轉換成字串 Date d = new Date(); Simple

VC charTCHAR之間轉換

                char:計算機程式語言(c、c++、java、VFP等)中可容納單個字元的一種基本資料型別。TCHAR:為了滿足Unicode編碼,對char的擴充套件,即_T(“str”)表示TCHAR型別C++支援兩種字串,即常規的ANSI編碼(使用""包裹)和Unicode編碼(使用L

ptpxremem之間區別總結

  pt與px   在html設計字型的css樣式中,有些字型設定成14pt,而不是14px,那pt是什麼,和px又有什麼關係呢?   pt(point)是印刷行業常用的單位,等於1/72英寸,表示絕

輸入一個整數陣列實現一個函式來調整該陣列中數字的順序使得所有的奇數位於陣列的前半部分 所有的偶數位於陣列的後半部分並保證奇數奇數偶數偶數之間的相對位置不變。

/** * * 輸入一個整數陣列,實現一個函式來調整該陣列中數字的順序,使得所有的奇數位於陣列的前半部分, * 所有的偶數位於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。 * * */ public class Solution { public stati

JS時間戳時間之間轉換

一、時間轉換時間戳 var date =newDate();//時間物件var str = date.getTime();//轉換成時間戳 二、時間戳轉換為時間 1.轉換成 2015/7/18 下午4:50:43 格式: function getDate(tm){v

字串字母數字之間的加減法

1 console.log(1+ "2"+"2"); 做加法時要注意雙引號,當使用雙引號時,JavaScript認為是字串,字串相加等於字串合併。 因此,這裡相當於字串的合併,即為122. 2. 1 c

MFC之控制元件Cstring型別轉換

1.開啟檔案 CFileDialog dlg(TRUE,NULL,NULL,OFN_ALLOWMULTISELECT,_T("All File |*.*|Jpeg File(*.jpg;*.jpeg;*.jpe)|*.jpg;*.jpeg;*.jpe|Windows(*

C# 實現16進位制字串之間轉換的程式碼

獲取字串中每個字元的十六進位制值。  獲取與十六進位制字串中的每個值對應的字元。  將十六進位制 string 轉換為整型。  將十六進位制 string 轉換為浮點型。  將位元組陣列轉換為十六進位制 string。 示例一:  輸出 string 中的每個字元的十六進位制值。 首先,它將 str

grepegrepfgreppgrep之間的區別

本文內容從:https://www.cnblogs.com/itech/p/5535080.html 翻譯而來 1、grep grep是“Global Regular Expressions Print”的首字母縮寫詞,意為全域性正則表示式列印。 grep是一個逐行掃描指定檔案或