【发布时间】:2014-08-05 13:24:37
【问题描述】:
在这里我遇到了一个具有挑战性的案例。我有一个 C++ 代码如下
TCHAR **x= NULL;
x= new TCHAR*[3];
x[0] = new TCHAR(_tcslen(_T("aaa")));
x[1] = new TCHAR(_tcslen(_T("bbb")));
x[2] = new TCHAR(_tcslen(_T("ccc")));
_tcscpy(x[0],_T("aaa"));
_tcscpy(x[1],_T("bbb"));
_tcscpy(x[2],_T("ccc"));
我分配了 3 个值 Tchars,但如果我不知道“x”包含的元素数量(可能有大约 10 个字符串).. 我怎样才能获得确切的元素数量..??
如果是二维数组,我可以通过
知道 result = (sizeof(x)/sizeof(x[0]));
所以它会告诉我其中的行数(在示例中我将得到 3 作为结果).. 但是这里有什么方法可以获取字符串的数量吗?
【问题讨论】:
-
使用矢量并选择
char或wchar_t,具体取决于您是否要支持Windows 9x(提示:如果您打算将这些用于Windows API 函数,只需使用wchar_t) ,然后将TCHAR *更改为std::[w]string。现在,您甚至没有正确使用指针。例如,您为 oneTCHAR分配值_tcslen(_T("aaa"))等等。即使你分配了一个数组,它对于你复制的内容来说也太短了。 -
TCHAR 只是一个字符,不是吗?
-
要动态地执行此操作,请创建第 4 个元素并在那里放置一个
NULL指针。所以你可以使用NULL作为列表结束的指示器。 -
啊,他的意思是
new TCHAR[_tcslen(_T("aaa"))];吗? -
请勿使用
TCHAR,除非您将旧版 Windows APP(NT 之前)移植到新窗口。尽管 MSDN 使用它和派生类型进行原型和解释,但这只是为了避免分别提及 Ansi 和 Wide 版本。
标签: c++ arrays pointers multidimensional-array