CStringArray

  关于CStringArray初始化

如题, 我想初始化一个字符串数组,我该如何做,先谢谢了

CStringArray *strCommands; 
strCommands->SetSize(count);//count 可以自己设定 
strCommands->SetAt(0,"qweq"); 
strCommands->SetAt(1,"qweq"); 
strCommands->SetAt(2,"qweq");


对于strArray用new初始化 
比如 CStringArray *strcommand = new CStringArray; 
strcommand->SetSize(3); 
strcommand->SetAt(0,"efraq");


或者让strcommand引用某个地址也可以 
比如

CStringArray m_strDlgCommands; 
CStringArray *strCommands=&(((CMainFrame*)AfxGetMainWnd())->m_strDlgCommands);

方法一: 
CStringArray *strArray = new CStringArray; 
strArray ->SetSize(3); //当超过3个元素后,会自动追加3个元素的空间.默认为SetSize(1); 
strArray ->SetAt(0,"efraq");

方法二: 
CStringArray *strArray = new CStringArray; 
strArray ->Add("str1"); 
strArray->Add("str2");

CString strArray[10] = {0}; //定义的时候将其全部初始化为空

//如果需要赋非空值 
strArray=("sfds","ds",.................);

//使用时赋值 
strArray[0] = "aaa"; 
strArray[1] = "bbb"; 
......

//若值有一定的规律也可以用循环赋值 
for(int i = 0; i < 10; i++) 

strArray[i] = "..."; 
}

### 如何在 API 接口中传递 `CStringArray` 参数 为了实现 `CStringArray` 的传递,通常有两种主要方式:通过序列化机制和直接作为函数参数。这两种方法各有优缺点。 #### 使用序列化机制传递 `CStringArray` MFC 提供了强大的序列化支持,允许对象及其成员变量被方便地保存到文件或从文件加载[^2]。对于 `CStringArray` 类型的数据结构,可以通过重载 `Serialize` 函数来实现其序列化的自定义逻辑: ```cpp void CYourClass::Serialize(CArchive& ar) { // 调用基类版本以确保所有继承链上的数据都被处理 CObject::Serialize(ar); if (ar.IsStoring()) { int count = m_cstringArray.GetSize(); ar << count; for(int i=0;i<count;++i){ CString strItem=m_cstringArray.GetAt(i); ar<<strItem; } }else{ int count; ar >> count; m_cstringArray.RemoveAll(); for(int i=0;i<count;++i){ CString strItem; ar>>strItem; m_cstringArray.Add(strItem); } } } ``` 这种方法适用于需要持久存储的情况,比如将整个文档状态保存至磁盘再恢复回来。 #### 将 `CStringArray` 作为参数直接传递给 API 函数 当只需要临时传输少量数据而不涉及长期储存时,则可以直接把 `CStringArray*` 或者 const 参考指针传入目标函数: ```cpp // 声明接受 CStringArray 的 API 函数原型 BOOL WINAPI YourApiFunction(LPCTSTR pszName, CStringArray *pStringArray); // 实现该 API 函数内部会访问 pStringArray 中的内容并执行相应操作 ``` 这种方式更加高效简洁,适合用于进程内通信场景下的快速调用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值