从给定索引返回子char字符串的函数

时间:2017-06-20 02:08:56

标签: c++ substring c-strings

实施一项功能:

char* subCstring(char * inStr, int start_index, int end_index)

将char数组作为输入作为c-string,并返回start_index和end_index之间相应字符的c-string。

3 个答案:

答案 0 :(得分:0)

我们可以蚕食输入字符串,过早地将其置零并在字符串内部进一步返回指针。

char* subCstring(char * inStr, int start_index, int end_index)
{
    inStr[end_index] = '\0'; // end_index + 1 if the end index is inclusive
    return &inStr[start_index];
}

注意,这不会检查以确保start小于end并且两者都在输入字符串的范围内。您可能需要添加此类检查。

答案 1 :(得分:0)

如果你不能蚕食你的输入字符串,即是只读的,那么你可以将malloc内存用于函数中的结果,之后不要忘记 free

char* subCstring(char * inStr, int start_index, int end_index)
{
    char *out = (char *) malloc(end_index - start_index + 2); // need '2' here to keep '\0'
    strncpy(out, inStr + start_index, end_index-start_index+1);
    return out;
}

如果在第二次调用函数之前消耗了函数的结果,则还可以对结果使用静态分配。

char* subCstring(char * inStr, int start_index, int end_index)
{
    static char out [256];
    strncpy(out, min(255, inStr + start_index, end_index-start_index+1));
    return out;
}

你也可以为参数中的结果传递已分配的内存。

或者您可以使用'c ++'std :: string以更优雅的方式完成它。

答案 2 :(得分:-1)

"{0:.{?}f}".format(t, precision).center(width)