因此,在尝试学习如何在 C++ 中使用 C-Strings 时,我遇到了内存分配问题。
这里的想法是创建一个格式为 (s1 + sep + s2) 的新字符串。我使用的文本提供了标题,所以我无法更改它,但我在尝试设置大小时遇到了问题的字符 str []。我收到一条错误消息,说 sLength 不是常量,因此不能用于设置数组的大小。我对 C++ 比较陌生,所以这是一个两部分的问题。
这个策略实际上是为新数组分配内存吗?
如果无法使用 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; }
进行了编辑,所以现在我没有收到编译器错误,但是...
该函数的调用在这里:
char* str = concatStrings("Here is String one", "Here is String two" , c);
cout<< str;
我的输出变为:
这是字符串 onec==================22221/21/21/21/2 / (等) / 这是字符串二