小编Kur*_*orf的帖子

我应该如何为c-string char数组分配内存?

因此,在尝试学习如何在C++中使用C-Strings时,我遇到了内存分配问题.

这里的想法是创建一个新的字符串格式(s1 + sep + s2)我正在使用的文本提供了标题,所以我不能改变它,但我遇到了试图设置大小的问题char str [].我收到一个错误,说sLength不是常量,因此不能用于设置数组的大小.我对C++比较陌生,所以这是一个两部分问题.

  1. 这个策略实际上是为新阵列分配内存吗?

  2. 如果使用strlen(char*)无法获得常量值,如何正确设置数组大小?

    char* concatStrings(char* s1, char* s2, char sep){
        int sLength = strlen(s1) + strlen(s2) + 3; 
        //+1 for char sep +2 for \0 at end of string
        char *str = new char[sLength];
        strcpy (str, s1);
        str [sLength(s1)] = sep;
        strcat (str, s2);
        return str;
    }
    
    Run Code Online (Sandbox Code Playgroud)

编辑,所以现在我没有编译错误,但...

对函数的调用如下:

    char* str = concatStrings("Here is String one", "Here is String two" , c);
    cout<< str;
Run Code Online (Sandbox Code Playgroud)

我的输出成为:

这里是String onec ================== 22221/21/21/21/2/(等) /这里是String 2

c c++ memory-management string-concatenation cstring

6
推荐指数
2
解决办法
3万
查看次数