`
aigo
  • 浏览: 2719345 次
  • 性别: Icon_minigender_1
  • 来自: 宜昌
社区版块
存档分类
最新评论

C++中TCHAR数组(wchar_t*)和char数组相关函数的对应关系

C++ 
阅读更多

MSDN文档:

strlen, wcslen, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l

https://msdn.microsoft.com/en-us/library/78zh94ax.aspx

strcmp, wcscmp, _mbscmp

https://msdn.microsoft.com/en-us/library/e0z9k731.aspx

strchr, wcschr, _mbschr, _mbschr_l

https://msdn.microsoft.com/en-us/library/b34ccac3.aspx

 

 

char*函数与THCAR*(wchar_t*)函数对应关系是:

strlen -》 wcslen

strcpy -》 wcscpy

strcmp -》wcscmp

strchr -》 wcschr

 

代码示例:

// crt_strlen.c
// Determine the length of a string. For the multi-byte character
// example to work correctly, the Japanese language support for
// non-Unicode programs must be enabled by the operating system.


#include <string.h>
#include <locale.h>

int main()
{
   char* str1 = "Count.";
   wchar_t* wstr1 = L"Count.";
   char * mbstr1;
   char * locale_string;

   // strlen gives the length of single-byte character string
   printf("Length of '%s' : %d\n", str1, strlen(str1) );

   // wstrlen gives the length of a wide character string
   wprintf(L"Length of '%s' : %d\n", wstr1, wcslen(wstr1) );

   // A multibyte string: [A] [B] [C] [katakana A] [D] [\0]
   // in Code Page 932. For this example to work correctly,
   // the Japanese language support must be enabled by the
   // operating system.
   mbstr1 = "ABC" "\x83\x40" "D";

   locale_string = setlocale(LC_CTYPE, "Japanese_Japan");

   if (locale_string == NULL)
   {
      printf("Japanese locale not enabled. Exiting.\n");
      exit(1);
   }
   else
   {
      printf("Locale set to %s\n", locale_string);
   }

   // _mbslen will recognize the Japanese multibyte character if the
   // current locale used by the operating system is Japanese
   printf("Length of '%s' : %d\n", mbstr1, _mbslen(mbstr1) );

   // _mbstrlen will recognize the Japanese multibyte character
   // since the CRT locale is set to Japanese even if the OS locale
   // isnot. 
   printf("Length of '%s' : %d\n", mbstr1, _mbstrlen(mbstr1) );
   printf("Bytes in '%s' : %d\n", mbstr1, strlen(mbstr1) );   

}

 

分享到:
评论

相关推荐

    CString、LPCTSTR、LPTSTR、TCHAR、WCHAR、string、wchar_t、char解析

    本文将深入解析几种常见的字符串类型,包括`CString`、`LPCTSTR`、`LPTSTR`、`TCHAR`、`WCHAR`、`string`、`wchar_t`和`char`。 1. `CString`:`CString`是Microsoft MFC(Microsoft Foundation Classes)库中定义...

    关于char,_wchar_t,_TCHAR,__T(),L,宏__T、TEXT,_TEXT、L.

    `char`, `_wchar_t`, `_TCHAR`, `__T()`, `L`, 宏`__T`, `TEXT`, `_TEXT`, 和 `L` 都是与字符编码和跨平台兼容性紧密相关的概念。 1. **`char`**: 这是最基本的字符类型,通常用于处理ASCII编码的单字节字符。例如...

    VC++中的char wchar_T和TCHAR

    ### VC++中的char, wchar_T和TCHAR详解 在VC++开发环境中,处理文本数据时,程序员经常会遇到三种字符类型:`char`、`wchar_T` 和 `TCHAR`。这些类型的选择对于确保代码的兼容性和效率至关重要。本文将详细介绍这三...

    VC++中的char,wchar_t,TCHAR

    在VC++中,char、wchar_t和TCHAR是三个非常重要的字符类型,它们之间的区别和使用方法是初学者需要了解的基础知识。下面我们将详细介绍这三个字符类型的概念、用法和区别。 一、char类型 char是C++中的基本字符...

    关于char的前后兼容问题

    在 C/C++ 中,为了编写能够同时支持 ANSI 和 Unicode 编码的代码,引入了 `TCHAR` 和 `_T()` 宏。 - **`TCHAR`**: 这个类型定义在 `&lt;tchar.h&gt;` 头文件中,其具体定义取决于是否定义了 `_UNICODE` 宏。如果定义了 `_...

    Char_Cstring_TCHAR.rar_C++ CString CHAR_Char_Cstring_TCHAR_TCHAR

    而在"Cstring_Char.cpp"和"Cstring_Char.h"这两个源文件中,很可能包含了具体的转换函数和示例代码,用于展示如何在`CHAR`、`TCHAR`和`CString`之间进行转换和操作。 例如,一个常见的转换函数可能如下所示: ```...

    C++char无法转为LPCWSTR的解决方法收集。

    可以使用函数将char类型转换为wchar_t类型,例如,使用mbstowcs()函数,可以将char数组转换为wchar_t数组: wchar_t wcBuf[20]; mbstowcs(wcBuf, szChar, 20); 解决方法四:使用wstring和string 可以使用wstring...

    QString转换为TCHAR*

    TCHAR*则是在Windows SDK中定义的,根据定义 `_UNICODE` 和 `_MBCS` 宏的状态,它可以是`wchar_t*`(Unicode)或`char*`(非Unicode)。 转换方法主要有以下几种: 1. 使用QString的`toLocal8Bit()`函数: 当需要...

    char TCHAR WCHAR区别

    在C/C++编程中,尤其是在Windows平台上的开发中,正确理解和使用`char`、`TCHAR`、`WCHAR`这三种字符类型对于处理文本数据至关重要。下面我们将深入探讨这三种类型的特点、区别以及它们在Unicode与非Unicode环境中的...

    char*转为LPCWSTR

    综上所述,`char*` 转换为 `LPCWSTR` 主要有三种方法:使用 `MultiByteToWideChar` 函数、直接定义宽字符字符串以及使用 `_T` 宏。每种方法都有其适用场景和优缺点,开发者可以根据具体需求选择合适的方法。

    浅谈c++ 字符类型总结区别wchar_t,char,WCHAR

    本文将深入探讨三种常见的字符类型:`char`、`wchar_t`和`WCHAR`,以及它们之间的区别和相互转换。 1. `char`类型: `char`是C++中的基本数据类型,用于存储单字节的ASCII字符。在ANSI编码(通常是ISO 8859-1)中...

    c++常用的字符转换和类型说明

    在Windows API中,`TCHAR`是一个宏定义,根据项目配置(多字节或宽字节字符集)动态地映射到`char`或`wchar_t`。因此,`LPTSTR`和`LPCTSTR`是`TCHAR*`和`const TCHAR*`的别名。 标准模板库(STL)提供了`std::string`...

    C++中一些容易混淆的知识

    CString、string、string.h、LPCTSTR、LPTSTR、TCHAR、WCHAR、wchar_t、char、BSTR、_bstr_t 这些是不同环境中处理字符串的不同方式: - **CString**:MFC框架中的字符串类。 - **string**:STL中的`std::string`...

    c++字符类型总结.pdf

    本文将对 C++ 字符类型进行总结,包括 char、wchar_t、TCHAR、BSTR 等类型的定义、特点和使用方法。 1. char 类型 char 是 C++ 中最基本的字符类型,用于存储单个字符。char 类型的变量可以存储一个字节的数据,...

    C++_Unicode_SBCS函数对照表

    本资源提供了 C++ 中 Unicode 和 SBCS(Single Byte Character Set,单字节字符集)函数的对照表,对于_char_和_TCHAR_类型的字符操作函数的使用非常有帮助。下面是对照表中的部分知识点解释: 1. 字符操作函数 在...

    string和char*

    CString 主要应用于 MFC 和 ATL 编程中,支持多种字符类型,如 char、wchar_t 和 TCHAR。 CString 的构造函数可以接受基本的字符串变量,如 char* 等。CString 提供了许多实用的成员函数,如 operator+=、operator+...

    (UNICODE 与非UNICODE导致的问题)CString,TCHAR和CHAR类型的互转.docx

    在C++编程中,特别是在MFC(Microsoft Foundation Classes)库中,`CString`、`TCHAR`和`CHAR`类型扮演着关键的角色,它们之间的转换是解决UNICODE和非UNICODE兼容问题的关键。 `CString`是MFC库提供的一种字符串类...

    string、wstring、cstring、 char、 tchar、int、dword转换方法

    首先,通过`_bstr_t`构造函数将`std::string`的`c_str()`转换为BSTR类型,然后将BSTR类型强制转换为宽字符指针`wchar_t*`,最后将这个指针转换为`std::wstring`对象。 #### `wstring`到`string` ```cpp string ws2s...

    转 String,CString,TCHAR,char之间区别和联系

    在C/C++中,`char`类型不仅可以用来存储单个字符,还可以组成数组(`char[]`)来表示字符串。 #### 2. `TCHAR` `TCHAR`是Microsoft为了支持多字节字符集(MBCS)和Unicode编码而在其库中定义的一个宏。它的具体类型取...

    VC++中字符串的处理

    `TCHAR` 类型可以根据编译器的设置(`UNICODE` 定义与否)动态决定为`char`或`wchar_t`类型。因此,`CString` 可以方便地支持ANSI和Unicode编码。此外,`CString` 提供了一系列方便的方法来执行字符串的拼接、查找、...

Global site tag (gtag.js) - Google Analytics