CString* pstrArray = new CString[nMySize];
现在,我怎么把它传递给一个函数来填补呢?什么是实际参数?
void FillThisArray(what goes here?)
{
}
CString* pstrArray = new CString[nMySize];
现在,我怎么把它传递给一个函数来填补呢?什么是实际参数?
void FillThisArray(what goes here?)
{
}
您应该使用一个容器类:CStringArray
void FillThisArray(CStringArray & rMyStrings)
如果你不想这(我看不出任何可能的原因,但无论如何):
void FillThisArray(CString* strings, size_t num)
{
// example
for(size_t s=0; s<num; s++)
{
strings[s].Format(_T("This is the %d. string"), s+1);
}
}
或更好的仍然使用`std :: vector
@Naveen:我会再次说,如果OP使用std :: string – 2010-11-26 09:02:13
void FillThisArray(CString* pstrArray)
不能ü做到这一点?
不,OP应该如何知道有效物品的数量? – 2010-11-26 09:02:54
您需要将指针传递给第一个元素,并可用元素的数量:
void FillThisArray(CString* strings, size_t num)
{
}
您必须通过一个镝作为指向其第一个元素的指针进行分配。有两种语法为,都是等价的:
void FillThisArray(CString* strArray)
{
}
或
void FillThisArray(CString strArray[])
{
}
可以使用strArray参数的函数内部的数组。请注意,指针并不包含有关数组实际大小的信息,所以如果大小不是全局可用的,则应将大小作为第二个参数传递。 hth
CString * pstrArray = NULL; pstrArray =新的CString [nMySize];
为了简单:
CString* pstrArray = new CString[nMySize];
现在,我怎么把它传递给一个函数来填补呢?什么是实际参数?
空隙FillThisArray(????){}
最明显的界面是:
void FillThisArray(CString* pstrArray, size_t n)
退一步:
CString
s将由该单个新语句分配std::vector<std::string>
std::vector
因为:
push_back()
,在这样的使用可以增长超过初始大小没有任何特殊的工作,你的一部分vector
如果你真的想要这种行为std::string
因为:
如果有一个很好的理由,为什么你不能用一个标准的容器类,考虑采取一个迭代式的方法。这将节省您不必担心数组有多大是你的函数:
void FillThisArray(CString* begin, CString* end)
{
for (CString* iter = begin; iter != end; ++iter)
{
*iter = "Some text";
}
}
int main()
{
CString* pstrArray = new CString[nMySize];
FillThisArray(&pstrArray[0], &pstrArray[nMySize]);
for (int i = 0; i < nMySize; ++i)
{
assert(pstrArray[i] == "Some_text");
}
delete[] pstrArray;
}
你甚至可以模板的功能,所以它不依赖于(有问题的)实现pstrArray的:
template <typename T>
void FillThisArray(T begin, T end)
{
for (T iter = begin; iter != end; ++iter)
{
*iter = "Some text";
}
}
int main()
{
{
CString* pstrArray = new CString[nMySize];
FillThisArray(&pstrArray[0], &pstrArray[nMySize]);
for (int i = 0; i < nMySize; ++i)
{
assert(pstrArray[i] == "Some text");
}
delete[] pstrArray;
}
{
std::vector<std::string> better(nMySize);
FillThisArray(better.begin(), better.end());
for (int i = 0; i < nMySize; ++i)
{
assert(better[i] == "Some text");
}
}
}
这是一个C问题?这看起来不是有效的C ... – SingleNegationElimination 2010-11-26 08:54:14