我在這裏要做的事情非常簡單。但是某種程度上,我有些失去了一些東西。我試圖用嚴格的字符串元素「預先聲明」一個數組,以便我可以在特定的時期(定期)更新數組內容。所以這裏是片段:C++使用字符串元素聲明未指定長度的數組
string ShotBox[] = {}; //"Pre-Declare" array that could contain as many elements here
然後我在我的更新容器中有一個循環。代碼段:
for (int i = 0; i < sizeof(ShotBox) - 1; i++){
std::string soa = sPath;
std::string so = soa + ShotBox[i];
char *cstr = new char[so.length() + 1];
strcpy(cstr, so.c_str());
scPath = cstr;
}
除了事實無論我試圖「預先聲明」,我得到一個內存訪問衝突的事實,一切都很好。在這個非常確切的片段中,確切的錯誤是:對於未指定邊界的數組,空數組是無效的。
我試過使用「矢量」,但似乎無法解決它。有什麼辦法解決這個問題?請我不要圖書館。我需要直接簡短的方法或類似的東西。
std :: vector。 –
bmargulies
「我試過使用」矢量「,但似乎無法解決它。」 - 你需要解釋爲什麼你可以使用std :: string而不是std :: vector。 –
你不能這樣做'string ShortBox [] = {}'因爲它必須推導出ShortBox的大小,但這會導致它被推斷爲'string [0]'這是不允許的。如果您想這樣做,請指定您希望數組的大小。 – vu1p3n0x