项目的字符集被设置为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;
}
分享到:
相关推荐
- **宽字符:** `wcslen()` 获取宽字符字符串长度。 - **通用:** `_tcslen()` 获取通用字符串长度。 - **字符串复制:** - **ANSI:** `strcpy()` 复制字符串。 - **宽字符:** `wcscpy()` 复制宽字符字符串。 - **...
在处理不同字符编码的字符串时,计算字符串长度的方式也有所不同。 - **`strlen()`**:返回单字节字符串的长度。 - **`wcslen()`**:返回宽字符串的长度,适用于Unicode。 #### 七、示例代码分析 文档中给出了一...
它总是以空字符终止,并且包含一个额外的字节作为字符串长度信息,这有助于提高性能和减少内存消耗。`BSTR`只能在Unicode环境下使用,因此其字符类型为`OLECHAR`,即`wchar_t`。 #### LPCTSTR:常量TCHAR指针 `...
`CString`类提供了丰富的字符串操作方法,比如获取字符串长度的`GetLength()`,截取字符串的`Left()`, `Right()`, `Mid()`,查找字符或子串的`Find()`,删除字符的`Remove()`,替换子串的`Replace()`,以及字符串...
// 获取输入字符串长度 CString strField = ""; // 初始化子字符串为空 for (int i = 0; i ; i++) { if (strList[i] == chSplit) // 如果当前字符等于分隔符 { vecString.push_back(strField); // 将子字符串...
获取TCHAR字符串长度可使用`lstrlen()`函数,如`int len = lstrlen(savePath);`。 接着,我们讨论CHAR类型,它通常用于表示ASCII编码的窄字符。字符串长度可以通过`strlen()`函数获取,如`int len = strlen...
在编程中,字符串转换是常见的操作,特别是在C++中,由于C++标准库中的字符串类型(如`std::string`)与MFC(Microsoft Foundation Classes)库中的`CString`类存在差异,所以需要进行不同类型的字符串转换。...
#### 一、获取字符串长度 在 Windows 下进行 Unicode 操作时,首先遇到的问题是如何获取字符串的长度。对于多字节字符(MBCS)和双字节字符集(DBCS),我们可以使用 `mbslen` 函数,而在 ANSI 编码中则使用 `strlen...
1. **获取字符串长度**: - `int GetLength() const;`:返回字符串的实际长度。 - 这个函数非常直观,可以快速获得字符串的长度,常用于循环控制或判断字符串是否为空。 2. **检查字符串是否为空**: - `BOOL ...
要将 `TCHAR` 转换为其他类型,可以使用 `_tcslen()` 获取长度,`_tcscpy()` 进行复制,或 `_ttoi()` 将字符串转换为整数。 **4. BSTR** `BSTR` 是COM(Component Object Model)接口中用于表示Unicode字符串的类型...
获取字符串长度 `int GetLength() const;`:返回字符串的长度,不包含结尾的空字符。 字符串反转 `void MakeReverse();`:颠倒字符串的顺序。 字符串大小写转换 `void MakeUpper();`:将小写字母转换为大写字母...
`:获取字符串长度。 - `int GetAllocLength() const;`:获取分配长度。 - `BOOL IsEmpty() const;`:判断字符串是否为空。 - `void Empty();`:清空字符串内容。 - `const CString& operator=(const CString& ...
该函数用于获取当前计算机上的所有逻辑驱动器名称,并将其存储在一个字符串数组中。函数原型如下: ```c++ DWORD GetLogicalDriveStrings( DWORD nBufferLength, // 缓冲区大小 LPTSTR lpBuffer // 指向缓存区的...
2. 获取字符串长度: - `GetLength()`:返回字符串的长度,不包括末尾的空字符。例如,`csStr.GetLength()`将返回字符串的实际字符数。 3. 字符串操作: - `MakeReverse()`:反转字符串中的字符顺序。如`csStr....
获取字符串长度 CString提供了GetLength()函数来获取字符串的长度,该函数返回字符串的长度,不包含结尾的空字符。 例如: ```c CString csStr = "ABCDEF中文 123456"; printf("%d", csStr.GetLength()); // 输出 ...
**获取字符串长度** ```cpp int GetLength() const; ``` 返回当前字符串的长度,包括实际字符数量但不包含结尾的零字符。 **反转字符串** ```cpp void MakeReverse(); ``` 将字符串中的字符顺序进行反转。例如,...
`CString` 是MFC中用于处理字符串的一种类型,它提供了丰富的字符串操作功能。有时我们需要将 `CString` 转换为 `char*` 类型,以便于与其他C/C++函数进行交互或用于某些API接口。 **转换方法** 通过类型强制转换...