MFC,如何获取CArray中的元素,哪个元素类型是CString
MFC, How to get the element in CArray, which element type is 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]没有数据,I而不是aryString.GetAt(0(,结果相同。
为什么?
.SetSize(3);
预留3个"房间"。调用Add();
三次,再保留3个"房间",因此您在计数时得到6,您的数组如下:- ""
- ""
- ""
- "a1"
- "a222"
- "a3"
。为了得到我想你想要的结果,一旦你设置了尺寸,你可以做:aryString.SetSize( 3 );
aryString[0] = "a1";
aryString[1] = "a222";
aryString[2] = "a3";
附带说明一下,MFC为您提供了CStringArray类,因此您无需执行以下操作:
CArray<CString,CString>
执行aryString.SetSize(3);
时,aryString
会用空字符串保留3项。当在末尾添加三个新字符串时,数组的项计数为6。第一项是空字符串,aryString.GetAt[3]
将返回a1,函数add将自动增加数组的大小,您不必使用SetSize(3)
来保留空间
我使用以下代码来设计元素
aryString.SetAtGrow(0, _T("a"));
aryString.SetAtGrow(1, _T("a"));
相关文章:
- C++ 未初始化的本地(非全局)int 数组中的元素类型到底是什么?
- 如何将 n 个连续元素插入到元素类型不可复制的 std::vector 中?
- 元函数使用 decltype 返回元素类型
- STDLIB中容器元素类型有什么要求?
- 使用 dectlype 推断模板元素类型中的数据类型是否正确?
- boost multi_index - 如果元素类型仅支持移动语义,如何遍历它?
- 打印/修改类对象的特定成员变量,其类定义列表 (STL) 包含的元素类型
- 使用声明中的元素类型隐式初始化 std::array
- 使用 SFINAE 和 void_t 来确定容器内的元素类型
- 键入 trait 以获取 std::array 或 C 样式数组的元素类型
- 如何在QTScript中将QLIST内部的QMAP注册为元素类型
- 关联容器,比较函数不是元素类型的一部分吗?
- 特征稀疏矩阵的 CoeffRef 中的错误,元素类型为向量
- 在编译时间检查模板参数类型是否设置或多键,并且容器的元素类型是算术的
- 从函数模板参数中自动推论对容器的元素类型
- 直接获取基于范围的循环中的元素类型 **例如"using"
- 定义指向 C++ 中相同元素类型的元素
- 如何在C++中一一阅读 CIN?元素类型不同
- 如何从STL容器实例中获取元素类型
- 容器的const_cast元素类型