项目的字符集被设置为Unicode字符集时,使用Window API经常性会遇到获取Unicode字符串的长度,如下所示:
下面方法是获取系统目录,并将系统目录写入到文件中保存,其中WriteFile方法第三个参数要传入TCHAR类型的字符串长度。
DWORD WriteSystemInfo()
{
TCHAR szSystemDir[MAX_PATH];
//获取系统目录
GetSystemDirectory(szSystemDir,MAX_PATH);
//文件句柄
HANDLE hFile;
DWORD dwWritten;
hFile = ::CreateFile(_T("systemroot.txt"),
GENERIC_WRITE,
0,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
//判断文件是否成功
if(hFile != INVALID_HANDLE_VALUE)
{
//将系统目录写入文件
//lstrlen获取TCHAR字符串的长度
if(!::WriteFile(hFile,szSystemDir,lstrlen(szSystemDir)*sizeof(TCHAR),
&dwWritten,NULL))
{
return GetLastError();
}
}
//关闭文件
::CloseHandle(hFile);
return 0;
}
分享到:
相关推荐
TCHAR字符串类, 封装了字符串的常用操作,如赋值、比较、格式化等,使用方法和MFC的CString类似,支持Unicode,只有一个.h文件,使用方便,有详细的代码注释
TCHAR字符串常量 _T("字符串str") #ifdef UNICODE typedef wchar_t TCHAR; #else typedef char TCHAR; #endif #ifdef UNICODE #define _tcscpy wcscpy #else #define _tcscpy strcpy #endif 再来看_...
2.2. C语言字符串与类型定义 12 2.3. COM中的字符串 - BSTR 与 VARIANT 14 2.4. 字符串包装类 15 2.4.1. CRT类 _bstr_t 15 2.4.2. _variant_t 15 2.4.3. STL类 16 2.4.4. ATL类 CComBSTR 16 2.4.5. ATL类CComVariant...
在VC++编程中,我们有时会遇到关于截取字符串的问题,对于CString类型字符串的截取VC中有现成的函数可供使用,主要是:CString Mid (int nFirst, int nCount);和BOOL AfxExtractSubString (CString& rString, ...
CString ,BSTR ,LPCTSTR之间关系和区别CString是一个动态TCHAR数组,BSTR是一种专有格式的字符串(需要用系统提供的函数来操纵,LPCTSTR只是一个常量的TCHAR指针。CString 是一个完全独立的类,动态的TCHAR数组,...
1数据转换:ANSI等编码、UTF8编码、UTF16编码(实际为Unicode编码)、TCHAR互转,可以先获取转换出的数据在存储时所需的大小 2字符串查找:正向查找、逆向查找、指定偏移查找 3字符串切割:正向分割、逆向分割、指定...
自实现String类,接受TCHAR类型,功能囊括std:string与CString的大部
CString(typedef CStringT<TCHAR, StrTraitMFC<TCHAR>> CString)为Visual C++中最常用的字符串类,继承自CSimpleStringT类,主要应用在MFC和ATL编程中,主要数据类型有char(应用于ANSI),wchar_t(unicode),...
CString、LPCTSTR、LPTSTR、TCHAR、WCHAR、string、wchar_t、char各种类型的转发与字符集的发展演变,通过思维导图清晰表示他们之间的关系,让初学者摆脱windows编程,常常遇到的的字符集的困惑。
输入要转换的全局字符串,例如:C:\\file\\我的文件.txt,输出: //C:\\file\\我的文件.txt #ifdef _UNICODE TCHAR szC:\\file\\我的文件.txt[] = { 'C', ':', '\\', 'f', 'i', 'l', 'e', '\\', 0x6211, 0x7684, 0x...
char是C语言标准数据类型,字符型,至于由几个字节组成通常由编译器决定,一般一个字节。 wchar_t是char的Unicode版本。相当于unsigned short。一般两个字节。 CHAR 和WCHAR分别是char和wchar_t的别名,决不会等同。...
当在 windows 下开发程序库时,使用 TCHAR 类型,比直接使用 char 和 wchar_t 具有更好的移植性。但是在编写动态链接库时,不能直接导出 TCHAR 类型的函数,给 TCHAR 类型函数的使用带来了一些限制。使用 texport 在...
精心整理,大家在使用VC++处理字符串的时候肯定遇到unicode 宽字符的问题: 比如:“不能将参数 1 从“const char [5]”转换为“LPCTSTR””之类的问题。 在此文档中告诉你怎么转换。 cstring 转换 char cstring ...
TCHAR 函数
texport用于自动生成 TCHAR 类型程序的 char 和 wchar_t 类型的函数调用存根
string,wstring,CString,TCHAR,char*之间常用转换 ,C/C++语言实现。
自己实现的字符串类 class CMStringImp; class CMstring { public: explicit CMstring(void); ~CMstring(void); CMstring(LPCTSTR lpszstr); CMstring(const CMstring& lpszstr); CMstring& operator = (const...
(UNICODE 与非UNICODE导致的问题),CString,TCHAR和CHAR类型的互转.docx 没有定义UNICODE,所以它里面的字符串就是简单用" "就行了,创建工程的时候包含了UNICODE定义,就必须对TCHAR和char进行转换。
能够有效的将QString转换为TCHAR*,编译运行通过
在PE格式里有个字段是文件的创建时间戳,我想把转成字符串,这样看的更直观。 TCHAR buffer[50] = {0}; struct tm Tm = {0}; time_t time = (time_t)NtHeader->FileHeader.TimeDateStamp;//时间戳 gmtime_s(&Tm,...