获取TCHAR数组的大小

时间:2014-09-16 13:04:46

标签: c++ winapi

我有一个2D TCHAR数组。我需要将它转换为一维数组。为此,我需要获得TCHAR数组的大小。

假设array[i] = "My name";

现在我需要获得array[i]的大小。有什么方法可以得到吗?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

首先添加这些宏:

#include <vector>
#include <string>

#ifndef UNICODE 
#define tstring std::string
#else
#define tstring std::wstring
#endif

#ifndef _T
#define _T(X) X 
#endif

现在宣布一个tstrings向量:

typedef std::vector<tstring> tstrings;

tstrings fileNames;

for(i=0;i<256;i++)
{
    tstring ts = FindFileData.cFileName;
    fileNames.push_back(ts);
}

知道您需要使用的字符串大小ts.length()

现在您可以使用+来附加字符串 像这样:

tstring ts1 = _T("hello"); 
tstring ts2 = _T("world");
ts1 += _T(" ");
ts1 += ts2;

BTW:使用数组作为变量名可能会导致std :: array出现歧义。

答案 1 :(得分:1)

  

现在我需要获得array[i]的大小。

使用_tcslen查找TCHAR的以空值终止的数组的长度,如果这是您真正想做的事情。

但是,您可能会更好地服务于:

  1. 完全不使用TCHAR而是仅使用UTF-16编码文本,即平台本机编码。
  2. 不使用C字符串而是使用std::wstring