#include <string>
#include <iostream>
using namespace std;
{
static const int sciDime = 2;// 数组维度:这里是2维数组
SAFEARRAY* pSA = NULL;
SAFEARRAYBOUND SAB[sciDime];
{
SAB[0].lLbound = 0;// 第一维度数组起始下标, 这里数组下标从0开始
SAB[0].cElements = 4;// 第一维度元素个数
SAB[1].lLbound = 1;// 第二维度数组起始下标,这里数组下标从1开始
SAB[1].cElements = 8;// 第二维度元素个数
}
pSA = ::SafeArrayCreate(VT_BSTR, sciDime, SAB);
if (pSA != NULL)
{
LONG iDime[sciDime] = { 0 };// 操作数组元素时的下标
{
int i = 0;
int iSize = SAB[0].cElements + SAB[0].lLbound;
for (i = SAB[0].lLbound; i < iSize; i++)
{
// 第一维的循环
iDime[0] = i;// 第一维数组下标
int j = 0;
long jSize = SAB[1].cElements + SAB[1].lLbound;
for (j = SAB[1].lLbound; j < jSize; j++)
{
// 第二维循环
iDime[1] = j;// 第二维数组下标
wstring ss = to_wstring(i) + L"x" + to_wstring(j);
BSTR sb = ::SysAllocString(ss.c_str());
HRESULT hrp = ::SafeArrayPutElement(pSA, iDime, sb);
if (hrp == S_OK)
{
}
else
{
}
}
}
}
wstring ssss;
{
int i = 0;
int iSize = SAB[0].cElements + SAB[0].lLbound;
for (i = SAB[0].lLbound; i < SAB[0].cElements + SAB[0].lLbound; i++)
{
iDime[0] = i;
int j = 0;
int jSize = SAB[1].cElements + SAB[1].lLbound;
for (j = SAB[1].lLbound; j < SAB[1].cElements + SAB[1].lLbound; j++)
{
iDime[1] = j;
BSTR sb = NULL;
HRESULT hrg = ::SafeArrayGetElement(pSA, iDime, &sb);
if (hrg == S_OK)
{
wstring ss = sb;
ssss += (ss + L" ");
}
else
{
wstring ss = to_wstring(i) + L"?" + to_wstring(j);
ssss += (ss + L" ");
}
}
if (i < iSize - 1)
{
ssss += (L" - ");
}
}
}
//wcout << ssss << endl;
HRESULT hr = ::SafeArrayDestroy(pSA);
if (hr == S_OK)
{
}
else
{
}
}
}