c++ 如何初始化由多个变量组成的可变char数组

nnsrf1az  于 2023-04-01  发布在  其他
关注(0)|答案(1)|浏览(107)

所以我有这个小代码我在ESP 32-S2上运行。我还使用平台IO和Arduino代码库。有一个带有头文件和cpp文件的lib。所以我想创建一个char数组,它是从多个变量和一些固定文本构建的。作为一个例子:
头文件:

class SomeClass
{
    private:
        const char* _someConstCharArray;
        char _someCharArray[100];
    public:
        SomeClass();
}

Cpp文件:

SomeClass::SomeClass() : _someConstCharArray("test")
{
    sprintf(_someCharArray,"thisisaurl/%s/set",_someConstCharArray);
}

这是合理的,然而_someCharArray有一个固定的大小,而我只知道构造函数中的大小。如果可能的话,我很乐意在那里分配大小。我还尝试了一堆其他的东西,但在板上编译失败。我读到过,由于内存碎片等原因,我应该避免字符串,但是如果有人能说服我这是最好的解决方案,我很乐意使用它们。你能帮我找到一个好的和正确的方法来创建一个字符数组,或者字符串吗?它是从构造函数中的多个其他变量和/或静态文本构建的,而不必编写十几个strcpy/strcat语句?

63lcw9qa

63lcw9qa1#

我对字符串的怀疑是由关于它的混合帖子引起的。阅读答案并没有消除我的怀疑。我决定这样做。
头文件:

class SomeClass
{
    private:
        const char* _someConstCharArray;
        char *_someCharArray;
    public:
        SomeClass();
}

Cpp文件:

SomeClass::SomeClass() : _someConstCharArray("test")
{
    _someCharArray = new char[strlen("thisisaurl/") + strlen(_someConstCharArray) + strlen("/set") + 1];
    sprintf(_someCharArray,"thisisaurl/%s/set",_someConstCharArray);
}

如果你看到任何问题,让我知道。不是最优雅的建设,但它似乎工作得很好,现在。

相关问题