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