MFC,如何在CArray中获取元素,哪个元素类型是CString

时间:2014-05-09 07:25:11

标签: c++ arrays visual-c++ mfc cstring

我在GetAT和aryString [n]中混淆,如下面的代码

CArray <CString, CString> arySctring;
aryString.SetSize(3);

aryString.Add(_T("a1"));
aryString.Add(_T("a222"));
aryString.Add(_T("a3"));

TRACE(_T("%d %s"), aryString.GetCount(), aryString[0]);

TRACE结果为“6”,表示aryString [0]没有数据,我代替aryString.GetAt(0),结果相同。

为什么?

3 个答案:

答案 0 :(得分:3)

.SetSize(3);
预订3间“房间”。调用
Add();
三次,保留另外3个“房间”,因此你得到6个数,你的数组如下:
  1. ""
  2. ""
  3. ""
  4. "a1"
  5. "a222"
  6. "a3"
。 为了得到你想要的结果,一旦你设定了尺寸,你就可以做到:
aryString.SetSize( 3 );
aryString[0] = "a1";
aryString[1] = "a222";
aryString[2] = "a3";

另外,MFC为您提供了CStringArray类,所以您不必这样做:

CArray<CString,CString>

答案 1 :(得分:1)

aryString.SetSize(3); aryString保留3个空字符串项时。 当你在结尾添加三个新字符串时,数组的项数是6.第一项是空字符串,aryString.GetAt[3]将返回a1,函数add会自动增加数组的大小,你没有到SetSize(3)预留空间

答案 2 :(得分:0)

我使用以下代码来分配元素

aryString.SetAtGrow(0, _T("a"));
aryString.SetAtGrow(1, _T("a"));