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