在C ++中返回C字符串数组

时间:2012-11-17 08:56:15

标签: c++ arrays cstring

我的功能有这个原型:

char[][100] toArray(char document[]);

g ++ on cygwin返回此错误:

Unable to resolve identifier toArray

如何返回C-Strings数组?

1 个答案:

答案 0 :(得分:6)

用C ++返回数组是不可能的。您可以做的最接近的是返回一个指向动态分配的字符串块的指针。

这是合法代码

typedef char str100[100];

str100* toArray(char* document)
{
    str100 *block = new str100[20];
    return block;
}

typedef让它更容易理解。如果您不相信我,那么没有typedef的相同代码

char (*toArray(char* document))[100]
{
    char (*block)[100] = new char[20][100];
    return block;
}

这是为了吓唬你。

但是虽然这段代码是合法的,但它也是垃圾。您应该使用std::vector<std::string>。动态分配内存很难,比使用为你工作的类要困难得多。