最近将一个多字节字符集代码改造为unicode字符集代码。但有一个问题比较烦人。就是常量字符串的改动。比如
TCHAR szName[] = "Jim", 需要改为
TCHAR szName[] = _T("Jim"); 由于代码中常量字符串中较多,需要改动的地方不少。怎么改动呢?我想需不需要在“快速替换”对话框中使用什么正则表达式呢。我对正则表达式也不熟啊。编译器是: VS 2005+ sp1.
TCHAR szName[] = "Jim", 需要改为
TCHAR szName[] = _T("Jim"); 由于代码中常量字符串中较多,需要改动的地方不少。怎么改动呢?我想需不需要在“快速替换”对话框中使用什么正则表达式呢。我对正则表达式也不熟啊。编译器是: VS 2005+ sp1.
解决方案 »
- windows 2000 和 XP 下应用程序的兼容问题
- 我想实现新建一个子节点后并选择这个节点,如何实现?大家来看看我的代码有什么错误?
- [在线等]如何修改ximage.h文件我只要jpg就可以了谢过
- 英文系统下,如何将汉字从richedit中读取和写入显示?
- 寻找可动态捕获应用程序调用了那些系统API的应用工具,找到就给分,知道的帮忙啊
- 請各位推荐几本visual C++ 語音編程的好書
- CPropertySheet中两个Page页,我想Page1的.cpp中调用Page2的函数,但不知道怎么弄!
- 怎么才能向RichEditCtrl中加入彩色文本,每行颜色都不同?
- 关于isapi取ip的问题
- 在DLL文件中使用ADO读取数据库为什么不行?
- error LNK2019 问题
- 关于 Serializable 的必要条件《深入浅出mfc》
".*"Replace with:
_T(\0)然后点替换,不过这这个模式没有办法区分
TCHAR szName[] = "Jim",
和
#include "xxx.h"因此你不能replace all,而只能一个一个的看到替换,发现是应该替换的才替换
char *szText = "我asd们的大中国qqwssadd";
size_t nLen = strlen(szText);
size_t nLenW = ::MultiByteToWideChar(CP_ACP,0,(const char *)szText,int(nLen),NULL,0);
WCHAR *wszText = new WCHAR[nLenW+1];
::MultiByteToWideChar(CP_ACP,0,(const char *)szText,int(nLen),wszText,int(nLenW));
wszText[nLenW] = L'\0';
MessageBoxExW(m_hWnd, wszText, L"123456", 0, 0);======================vc2005===============================
WCHAR* CClientDlg::StrToWchar(CString strSrc)
{
size_t nLen = strSrc.GetLength()+1;
char *szText = new char[nLen];
sprintf_s(szText, nLen, "%s", strSrc);
size_t nLenW = ::MultiByteToWideChar(CP_ACP,0,(const char *)szText,int(nLen),NULL,0);
WCHAR *wszText = new WCHAR[nLenW+1];
::MultiByteToWideChar(CP_ACP,0,(const char *)szText,int(nLen),wszText,int(nLenW));
wszText[nLenW] = L'\0';
return wszText;
}
自己变下,也能从char*转
用_T不保险,因为_T是一种“适配宏”,即:用它修饰的字符串既可以被用asc方式保存,也可以用unicade方式
保存,这要看编译环境的字符集了,如果它的字符集是asc的,那字符就会被用asc方式保存。如果确定要将字符转换为unicode字符集代码,建议使用"L",这样不论在任何字符集编译环境下,字符都会被用unicade方式保存。
这个不用了,《Windows核心编程》就有。单个转换没什么意义的。我的任务是要把整个工程的代码进行转换。
查找:{jmp|djnz|cjne}?*[, ]?[a-z|A-Z|0-9|_]+[\t ]*$
替换为:%04
假设原始文件为:
#include "test.h"
TCHAR szName[] = "Jim";
TCHAR szName2[] = "Jim2\"test";
char szName3[] = "Jim3";
char szName3[] = "Jim3";
TCHAR szName4[] = _T("Jim");
TCHAR szName5[] = _T("Jim") ;
sprintf(szName5, "TCHAR szName=\"\"") ; 将被转换为:
#include "test.h"
TCHAR szName[] = _T("Jim");
TCHAR szName2[] = _T("Jim2\"test");
char szName3[] = _T("Jim3");
char szName3[] = _T("Jim3");
TCHAR szName4[] = _T("Jim");
TCHAR szName5[] = _T("Jim") ;
sprintf(szName5, "TCHAR szName=\"\"") ;
查找:^[\t ]*(TCHAR|char)?*=[\t ]*"*"[\t ]*;[\t ]*$
替换为:%01TCHAR%03%04%05_T(%06%07%08)%09%10%11
假设原始文件为:
#include "test.h"
TCHAR szName[] = "Jim";
TCHAR szName2[] = "Jim2\"test";
char szName3[] = "Jim3";
char szName3[] = "Jim3";
TCHAR szName4[] = _T("Jim");
TCHAR szName5[] = _T("Jim") ;
sprintf(szName5, "TCHAR szName=\"\"") ;将被转换为:
#include "test.h"
TCHAR szName[] = _T("Jim");
TCHAR szName2[] = _T("Jim2\"test");
TCHAR szName3[] = _T("Jim3");
TCHAR szName3[] = _T("Jim3");
TCHAR szName4[] = _T("Jim");
TCHAR szName5[] = _T("Jim") ;
sprintf(szName5, "TCHAR szName=\"\"") ;