char** strSplit(const char* str, const char splitter)
{
unsigned long splitterCount = strSplitCount(str, splitter) + 1;
char** result = new char*[splitterCount];
unsigned long startRange = 0, endRange = 0;
for (unsigned long i = 0; i < splitterCount; i++)
{
while (str[endRange] == splitter)
{
endRange++;
startRange++;
}
while (str[endRange] != splitter && str[endRange] != '\0')
{
endRange++;
}
result[i] = new char[(endRange - startRange + 1)];
strCopy(result[i], str);
// unsigned long indexOffset = 0;
// for (unsigned long j = startRange; j < endRange; j++)
// {
// if (str[j] != splitter)
// {
// result[i][indexOffset] = str[j];
// }
// indexOffset++;
// }
// result[i][indexOffset] = '\0';
//
// startRange = ++endRange;
}
return result;
}
此函數需要一個cstring的const char *和一個要在字符串中拆分的const char *。該函數正確地將字符串分割成char **並返回它。爲了使看起來更清潔的功能,我做了一個strCopy函數,在這個函數之外正確地工作。但是,當在函數中使用strCopy時,Visual Studio會引發嚴重錯誤。但是,如果取消評論代碼的註釋並刪除strCopy函數,使事情變得更有趣,數據將被正確複製並且不會引發錯誤。那麼爲什麼我的strCopy函數不起作用?當從char *複製到char *時出現嚴重錯誤使用自定義字符串複製函數
void strCopy(char* dest, const char* src)
{
while (*src)
{
*dest = *src;
src++;
dest++;
}
*dest = '\0';
}
如果您使用的是C++,那麼爲什麼要標記C並使用strcpy?使用'str :: string'代替 –
C不是C++不是C!刪除不相關的標籤。 – Olaf